UniSet 2.44.3
Класс uniset::LogDB::LogWebSocket

#include <LogDB.h>

Граф наследования:uniset::LogDB::LogWebSocket:
Граф связей класса uniset::LogDB::LogWebSocket:

Открытые члены

 LogWebSocket (Poco::Net::HTTPServerRequest *req, Poco::Net::HTTPServerResponse *resp, std::shared_ptr< Log > &log)
bool isActive ()
void set (ev::dynamic_loop &loop)
void send (ev::timer &t, int revents)
void ping (ev::timer &t, int revents)
void add (Log *log, const std::string &txt)
void term ()
void waitCompletion ()
void setHearbeatTime (const double &sec)
void setSendPeriod (const double &sec)
void setMaxSendCount (size_t val)
void setBackpressureTimeout (const double &sec)
void setPendingNotice (const std::string &msg)
void setQueueBytesLimit (size_t bytes)
void setMaxFrameBytes (size_t bytes)
void setPongTimeout (const double &sec)
void setMaxLifetime (const double &sec)

Открытые атрибуты

std::shared_ptr< DebugStreamdblog

Защищенные члены

void read (ev::io &w, int revents)
void checkPongTimeout (ev::timer &t, int revents)
void enqueueMessage (const std::string &msg)
void buildFramesFromMessages ()
void clearFrames ()
void logQueueStats (const std::string &reason)
void write ()
void handleBackpressure ()

Защищенные данные

ev::timer iosend
double send_sec = { 0.5 }
size_t maxsend = { 200 }
ev::timer ioping
double ping_sec = { 3.0 }
ev::io ioread
ev::timer iopongcheck
double pongTimeout_sec = { 10.0 }
std::atomic_bool waitingPong = { false }
std::chrono::steady_clock::time_point lastPingSent
std::chrono::steady_clock::time_point sessionStart
double maxLifetime_sec = { 0 }
std::mutex finishmut
std::condition_variable finish
std::atomic_bool cancelled = { false }
sigc::connection con
Poco::Net::HTTPServerRequest * req
Poco::Net::HTTPServerResponse * resp
std::queue< UTCPCore::Buffer * > wbuf
std::deque< std::string > msgQueue
size_t queuedBytes = { 0 }
size_t queueBytesLimit = { 2 * 1024 * 1024 }
size_t maxFrameBytes = { 64 * 1024 }
std::chrono::steady_clock::time_point lastDiag
size_t lostByOverflow = { 0 }
size_t backpressureCount = { 0 }
std::chrono::steady_clock::time_point backpressureStart
bool backpressureActive = { false }
double backpressureTimeout_sec = { 5.0 }
std::string pendingNotice
std::unique_ptr< Poco::ObjectPool< uniset::UTCPCore::Buffer > > bufPool
size_t bufPoolCapacity = { 256 }
size_t bufPoolPeak = { 2000 }
std::shared_ptr< Loglog

Подробное описание

класс реализует работу с websocket через eventloop Из-за того, что поступление логов может быть достаточно быстрым чтобы не "завалить" браузер кучей сообщений, сделана посылка не по факту приёма сообщения, а раз в send_sec, не более maxsend сообщений.