UniSet @VERSION@
Открытые члены | Открытые атрибуты | Защищенные члены | Защищенные данные | Полный список членов класса
Класс uniset::LogDB::LogWebSocket

#include <LogDB.h>

Граф наследования:uniset::LogDB::LogWebSocket:
Inheritance graph
[см. легенду]
Граф связей класса uniset::LogDB::LogWebSocket:
Collaboration graph
[см. легенду]

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

 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 сообщений.