Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
THttpLongPollEngine Class Reference

Emulation of websocket with long poll requests.

Allows to send data from server to client without explicit request

Created automatically as fallback solution when normal WebSopcket connection cannot be established

Definition at line 23 of file THttpLongPollEngine.h.

Public Member Functions

 THttpLongPollEngine (bool raw=false)
 constructor
 
virtual ~THttpLongPollEngine ()=default
 
void ClearHandle (Bool_t) override
 Clear request.
 
UInt_t GetId () const override
 Returns ID of the engine, created from this pointer.
 
void PostProcess (std::shared_ptr< THttpCallArg > &arg) override
 Post process http request.
 
Bool_t PreProcess (std::shared_ptr< THttpCallArg > &arg) override
 Preview data for given socket.
 
void Send (const void *buf, int len) override
 Send binary data via connection.
 
void SendCharStar (const char *buf) override
 Send const char data.
 
void SendHeader (const char *hdr, const void *buf, int len) override
 Send binary data with text header via connection.
 
- Public Member Functions inherited from THttpWSEngine
virtual ~THttpWSEngine ()=default
 

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.
 
std::string MakeBuffer (const void *buf, int len, const char *hdr=nullptr)
 !< default reply on the longpoll request
 
- Protected Member Functions inherited from THttpWSEngine
 THttpWSEngine ()=default
 
virtual Bool_t SupportSendThrd () const
 Indicate if engine require extra thread to complete postponed thread operation.
 

Protected Attributes

std::string fBuf
 !< if buffered data available
 
std::string fBufHeader
 !< buffered data
 
EBufKind fBufKind {kNoBuf}
 !< hold polling request, which can be immediately used for the next sending
 
std::mutex fMutex
 !< if true, only content can be used for data transfer
 
std::shared_ptr< THttpCallArgfPoll
 !< protect polling request to use it from different threads
 
bool fRaw {false}
 

Static Protected Attributes

static const std::string gLongPollNope = "<<nope>>"
 !< buffered header
 

Friends

class THttpServer
 

#include </home/sftnight/build/workspace/root-makedoc-master/rootspi/rdoc/src/master/net/http/src/THttpLongPollEngine.h>

Inheritance diagram for THttpLongPollEngine:
[legend]

Member Enumeration Documentation

◆ EBufKind

Enumerator
kNoBuf 
kTxtBuf 
kBinBuf 

Definition at line 28 of file THttpLongPollEngine.h.

Constructor & Destructor Documentation

◆ THttpLongPollEngine()

THttpLongPollEngine::THttpLongPollEngine ( bool  raw = false)

constructor

Definition at line 35 of file THttpLongPollEngine.cxx.

◆ ~THttpLongPollEngine()

virtual THttpLongPollEngine::~THttpLongPollEngine ( )
virtualdefault

Member Function Documentation

◆ CanSendDirectly()

Bool_t THttpLongPollEngine::CanSendDirectly ( )
overrideprotectedvirtual

Indicate that polling requests is there or buffer empty and can be immediately invoked.

Reimplemented from THttpWSEngine.

Definition at line 270 of file THttpLongPollEngine.cxx.

◆ ClearHandle()

void THttpLongPollEngine::ClearHandle ( Bool_t  )
overridevirtual

Clear request.

normally called shortly before destructor

Implements THttpWSEngine.

Definition at line 53 of file THttpLongPollEngine.cxx.

◆ GetId()

UInt_t THttpLongPollEngine::GetId ( ) const
overridevirtual

Returns ID of the engine, created from this pointer.

Implements THttpWSEngine.

Definition at line 42 of file THttpLongPollEngine.cxx.

◆ MakeBuffer()

std::string THttpLongPollEngine::MakeBuffer ( const void *  buf,
int  len,
const char *  hdr = nullptr 
)
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 73 of file THttpLongPollEngine.cxx.

◆ PostProcess()

void THttpLongPollEngine::PostProcess ( std::shared_ptr< THttpCallArg > &  arg)
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 239 of file THttpLongPollEngine.cxx.

◆ PreProcess()

Bool_t THttpLongPollEngine::PreProcess ( std::shared_ptr< THttpCallArg > &  arg)
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 200 of file THttpLongPollEngine.cxx.

◆ Send()

void THttpLongPollEngine::Send ( const void *  buf,
int  len 
)
overridevirtual

Send binary data via connection.

Implements THttpWSEngine.

Definition at line 103 of file THttpLongPollEngine.cxx.

◆ SendCharStar()

void THttpLongPollEngine::SendCharStar ( const char *  buf)
overridevirtual

Send const char data.

Either do it immediately or keep in internal buffer

Reimplemented from THttpWSEngine.

Definition at line 166 of file THttpLongPollEngine.cxx.

◆ SendHeader()

void THttpLongPollEngine::SendHeader ( const char *  hdr,
const void *  buf,
int  len 
)
overridevirtual

Send binary data with text header via connection.

Implements THttpWSEngine.

Definition at line 132 of file THttpLongPollEngine.cxx.

Friends And Related Symbol Documentation

◆ THttpServer

friend class THttpServer
friend

Definition at line 24 of file THttpLongPollEngine.h.

Member Data Documentation

◆ fBuf

std::string THttpLongPollEngine::fBuf
protected

!< if buffered data available

Definition at line 34 of file THttpLongPollEngine.h.

◆ fBufHeader

std::string THttpLongPollEngine::fBufHeader
protected

!< buffered data

Definition at line 35 of file THttpLongPollEngine.h.

◆ fBufKind

EBufKind THttpLongPollEngine::fBufKind {kNoBuf}
protected

!< hold polling request, which can be immediately used for the next sending

Definition at line 33 of file THttpLongPollEngine.h.

◆ fMutex

std::mutex THttpLongPollEngine::fMutex
protected

!< if true, only content can be used for data transfer

Definition at line 31 of file THttpLongPollEngine.h.

◆ fPoll

std::shared_ptr<THttpCallArg> THttpLongPollEngine::fPoll
protected

!< protect polling request to use it from different threads

Definition at line 32 of file THttpLongPollEngine.h.

◆ fRaw

bool THttpLongPollEngine::fRaw {false}
protected

Definition at line 30 of file THttpLongPollEngine.h.

◆ gLongPollNope

const std::string THttpLongPollEngine::gLongPollNope = "<<nope>>"
staticprotected

!< buffered header

Definition at line 36 of file THttpLongPollEngine.h.