Emulation of websocket with long poll requests.
Allows to send data from server to client without explicit request
Definition at line 23 of file THttpLongPollEngine.h.
Public Member Functions | |
THttpLongPollEngine (bool raw=false) | |
constructor More... | |
virtual | ~THttpLongPollEngine ()=default |
void | ClearHandle (Bool_t) override |
Clear request. More... | |
UInt_t | GetId () const override |
Returns ID of the engine, created from this pointer. More... | |
void | PostProcess (std::shared_ptr< THttpCallArg > &arg) override |
Post process http request. More... | |
Bool_t | PreProcess (std::shared_ptr< THttpCallArg > &arg) override |
Preview data for given socket. More... | |
void | Send (const void *buf, int len) override |
Send binary data via connection. More... | |
void | SendCharStar (const char *buf) override |
Send const char data. More... | |
void | SendHeader (const char *hdr, const void *buf, int len) override |
Send binary data with text header via connection. More... | |
![]() | |
virtual | ~THttpWSEngine ()=default |
virtual void | ClearHandle (Bool_t)=0 |
virtual UInt_t | GetId () const =0 |
virtual void | PostProcess (std::shared_ptr< THttpCallArg > &arg) |
Method invoked after user process data received via websocket. More... | |
virtual Bool_t | PreProcess (std::shared_ptr< THttpCallArg > &arg) |
Method should be invoked before processing data coming from websocket If method returns kTRUE, data is processed internally and not dedicated for further usage. More... | |
virtual void | Send (const void *buf, int len)=0 |
virtual void | SendCharStar (const char *str) |
Envelope for sending string via the websocket. More... | |
virtual void | SendHeader (const char *hdr, const void *buf, int len)=0 |
Protected Types | |
enum | EBufKind { kNoBuf , kTxtBuf , kBinBuf } |
Protected Member Functions | |
virtual Bool_t | CanSendDirectly () override |
Indicate that polling requests is there or buffer empty and can be immediately invoked. More... | |
std::string | MakeBuffer (const void *buf, int len, const char *hdr=nullptr) |
!< default reply on the longpoll request More... | |
![]() | |
THttpWSEngine ()=default | |
virtual Bool_t | CanSendDirectly () |
One always can send data to websocket - as long as previous send operation completed. More... | |
virtual Bool_t | SupportSendThrd () const |
Indicate if engine require extra thread to complete postponed thread operation. More... | |
Protected Attributes | |
std::string | fBuf |
!< if buffered data available More... | |
std::string | fBufHeader |
!< buffered data More... | |
EBufKind | fBufKind {kNoBuf} |
!< hold polling request, which can be immediately used for the next sending More... | |
std::mutex | fMutex |
!< if true, only content can be used for data transfer More... | |
std::shared_ptr< THttpCallArg > | fPoll |
!< protect polling request to use it from different threads More... | |
bool | fRaw {false} |
Static Protected Attributes | |
static const std::string | gLongPollNope = "<<nope>>" |
!< buffered header More... | |
Friends | |
class | THttpServer |
|
protected |
Enumerator | |
---|---|
kNoBuf | |
kTxtBuf | |
kBinBuf |
Definition at line 28 of file THttpLongPollEngine.h.
THttpLongPollEngine::THttpLongPollEngine | ( | bool | raw = false | ) |
constructor
Definition at line 33 of file THttpLongPollEngine.cxx.
|
virtualdefault |
|
overrideprotectedvirtual |
Indicate that polling requests is there or buffer empty and can be immediately invoked.
Reimplemented from THttpWSEngine.
Definition at line 268 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Clear request.
normally called shortly before destructor
Implements THttpWSEngine.
Definition at line 51 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Returns ID of the engine, created from this pointer.
Implements THttpWSEngine.
Definition at line 40 of file THttpLongPollEngine.cxx.
|
protected |
!< default reply on the longpoll request
Create raw buffer which should be send as reply.
For the raw mode all information must be send via binary response
Definition at line 71 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Post process http request.
Normally requests from client does not replied directly for longpoll socket Therefore one can use such request to send data, which was submitted before to the queue
Reimplemented from THttpWSEngine.
Definition at line 237 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Preview data for given socket.
Method called by WS handler before processing websocket data Returns kTRUE when user should ignore such http request - it is for internal use
Reimplemented from THttpWSEngine.
Definition at line 198 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Send binary data via connection.
Implements THttpWSEngine.
Definition at line 101 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Send const char data.
Either do it immediately or keep in internal buffer
Reimplemented from THttpWSEngine.
Definition at line 164 of file THttpLongPollEngine.cxx.
|
overridevirtual |
Send binary data with text header via connection.
Implements THttpWSEngine.
Definition at line 130 of file THttpLongPollEngine.cxx.
|
friend |
Definition at line 24 of file THttpLongPollEngine.h.
|
protected |
!< if buffered data available
Definition at line 34 of file THttpLongPollEngine.h.
|
protected |
!< buffered data
Definition at line 35 of file THttpLongPollEngine.h.
!< hold polling request, which can be immediately used for the next sending
Definition at line 33 of file THttpLongPollEngine.h.
|
protected |
!< if true, only content can be used for data transfer
Definition at line 31 of file THttpLongPollEngine.h.
|
protected |
!< protect polling request to use it from different threads
Definition at line 32 of file THttpLongPollEngine.h.
|
protected |
Definition at line 30 of file THttpLongPollEngine.h.
|
staticprotected |
!< buffered header
Definition at line 36 of file THttpLongPollEngine.h.