12#ifndef ROOT_THttpWSEngine
13#define ROOT_THttpWSEngine
22#include <condition_variable>
61 virtual void Send(
const void *buf,
int len) = 0;
63 virtual void SendHeader(
const char *hdr,
const void *buf,
int len) = 0;
69 virtual void PostProcess(std::shared_ptr<THttpCallArg> &arg);
bool fWaiting
! if condition wait is called
bool fMTSend
! true when send operation runs, set under locked fMutex from WSHandler
virtual Bool_t PreProcess(std::shared_ptr< THttpCallArg > &arg)
Method should be invoked before processing data coming from websocket If method returns kTRUE,...
std::condition_variable fCond
! condition used to sync with sending thread
std::mutex fMutex
! protects all data behind
virtual void SendCharStar(const char *str)
Envelope for sending string via the websocket.
virtual UInt_t GetId() const =0
std::thread fSendThrd
! dedicated thread for all send operations
bool fHasSendThrd
! if thread was started one have to call join method for it
bool fDisabled
! true shortly before cleanup, set under locked fMutex from WSHandler
virtual void SendHeader(const char *hdr, const void *buf, int len)=0
virtual Bool_t CanSendDirectly()
One always can send data to websocket - as long as previous send operation completed.
enum THttpWSEngine::@150 kNone
! kind of operation
virtual void PostProcess(std::shared_ptr< THttpCallArg > &arg)
Method invoked after user process data received via websocket.
virtual Bool_t SupportSendThrd() const
Indicate if engine require extra thread to complete postponed thread operation.
virtual void Send(const void *buf, int len)=0
bool fSending
! performing send operation in other thread
std::string fData
! data (binary or text)
virtual ~THttpWSEngine()=default
virtual void ClearHandle(Bool_t)=0