DABC (Data Acquisition Backbone Core)
2.9.9
|
Special thread class for handling sockets. More...
#include <dabc/SocketThread.h>
Data Structures | |
struct | ProcRec |
Public Member Functions | |
virtual const char * | ClassName () const |
Returns class name of the object instance. More... | |
virtual bool | CompatibleClass (const std::string &clname) const |
SocketThread (Reference parent, const std::string &name, Command cmd) | |
virtual | ~SocketThread () |
Public Member Functions inherited from dabc::Thread | |
bool | Execute (Command cmd, double tmout=-1) |
void | FireDoNothingEvent () |
double | GetStopTimeout () const |
bool | IsItself () const |
virtual void * | MainLoop () |
virtual void | Print (int lvl=0) |
Print thread content on debug output. More... | |
void | RunEventLoop (double tmout=1.) |
Runs thread event loop for specified time. More... | |
void | SetPriority (int prio=0) |
void | SetStopTimeout (double timeout_sec) |
bool | SingleLoop (unsigned workerid=0, double tmout=-1) |
Processes single event from the thread queue. More... | |
bool | Start (double timeout_sec=-1., bool real_thread=true) |
bool | Stop (double timeout_sec=10) |
bool | Sync (double timeout_sec=-1) |
Thread (Reference parent, const std::string &name, Command cmd=nullptr) | |
unsigned | TotalNumberOfEvents () |
Return total number of all events in the queues. More... | |
virtual | ~Thread () |
Public Member Functions inherited from dabc::Object | |
bool | AddChild (Object *child, bool withmutex=true) throw () |
Add object to list of child objects, thread safe More... | |
bool | AddChildAt (Object *child, unsigned pos, bool withmutex=true) |
Add object to list of child objects at specified position. More... | |
virtual void | BuildFieldsMap (RecordFieldsMap *cont) |
Fill fields map, which is relevant for the object Objects hierarchy produced from dabc::Manager. More... | |
virtual bool | Find (ConfigIO &cfg) |
Method to locate object in xml file. More... | |
Object * | FindChild (const char *name) const |
returns pointer on child object with given name More... | |
Reference | FindChildRef (const char *name, bool force=false) const throw () |
returns reference on child object with given name More... | |
bool | GetAllChildRef (ReferencesVector *vect) const |
Object * | GetChild (unsigned n) const |
returns pointer on child object More... | |
Reference | GetChildRef (unsigned n) const |
returns reference on child object More... | |
Reference | GetFolder (const std::string &name, bool force=false) throw () |
Return folder of specified name, no special symbols allowed. More... | |
const char * | GetName () const |
Returns name of the object, thread safe More... | |
Object * | GetParent () const |
Returns pointer on parent object, thread safe More... | |
Reference | GetParentRef () const |
bool | IsChildsHidden () const |
Return true if object wants to hide childs from hierarchy scan, thread safe More... | |
bool | IsHidden () const |
Return true if object wants to be hidden from hierarchy scan, thread safe More... | |
bool | IsLogging () const |
Return true if object selected for logging, thread safe More... | |
bool | IsName (const char *str) const |
Checks if object name is same as provided string, thread safe More... | |
bool | IsName (const char *str, int len) const |
Checks if object name is same as provided, thread safe More... | |
bool | IsName (const std::string &str) const |
Checks if object name is same as provided string, thread safe More... | |
bool | IsNameMatch (const std::string &mask) const |
Check if object name match to the mask. More... | |
bool | IsOwner () const |
Returns true if object is owner of its children, thread safe More... | |
bool | IsParent (Object *obj) const |
Checks if specified argument is in the list of object parents. More... | |
bool | IsTopXmlLevel () const |
Return true if object should be searched in the top level of the xml file, thread safe More... | |
std::string | ItemName (bool compact=true) const |
Produce string, which can be used as name argument in dabc::mgr.FindItem(name) call. More... | |
unsigned | NumChilds () const |
returns number of child objects More... | |
Object (const std::string &name, unsigned flags=flIsOwner) | |
Resolve problem with child-parent mutex locking. More... | |
Object (Reference parent, const std::string &name, unsigned flags=flIsOwner) | |
bool | RemoveChild (Object *child, bool cleanup=true) throw () |
Detach child from parent object If cleanup==true and parent is owner of child, child will be destroyed. More... | |
bool | RemoveChildAt (unsigned n, bool cleanup=true) throw () |
Detach child object from parent at specified position If cleanup==true and object is owner of child, child will be destroyed. More... | |
bool | RemoveChilds (bool cleanup=true) |
Remove all childs. More... | |
void | SetLogging (bool on=true) |
Sets logging flag, thread safe More... | |
virtual | ~Object () |
Static Public Member Functions | |
static bool | AttachMulticast (int handle, const std::string &addr) |
Attach datagram socket to multicast group to make receiving. More... | |
static int | BindUdp (int fd, int nport, int portmin=-1, int portmax=-1) |
Bind UDP socket to specified port. More... | |
static void | CloseUdp (int fd) |
Close datagram (udp) socket. More... | |
static int | ConnectUdp (int fd, const std::string &remhost, int remport) |
static SocketClientAddon * | CreateClientAddon (const std::string &servid, int dflt_port=-1) |
static SocketServerAddon * | CreateServerAddon (const std::string &host, int nport, int portmin=-1, int portmax=-1) |
Create handle for server-side connection If hostname == 0, any available address will be selected If hostname == "", configured hostname or just $HOST variable will be used If hostname is not empty, only selected host will be tried to bin One could bind such connection to specified port or try to choose from available ports More... | |
static int | CreateUdp () |
Create datagram (udp) socket. More... | |
static std::string | DefineHostName (bool force=true) |
Return current host name. More... | |
static void | DettachMulticast (int handle, const std::string &addr) |
Detach datagram socket from multicast group. More... | |
static int | RecvBuffer (int fd, void *buf, int len) |
Wrapper for recv method, should be used for blocking sockets. More... | |
static int | SendBuffer (int fd, void *buf, int len) |
Wrapper for send method, should be used for blocking sockets. More... | |
static bool | SetNoDelaySocket (int fd) |
static bool | SetNonBlockSocket (int fd) |
static int | StartClient (const std::string &host, int nport, bool nonblocking=true) |
Static Public Member Functions inherited from dabc::Thread | |
static unsigned | NumThreadInstances () |
Static Public Member Functions inherited from dabc::Object | |
static void | Destroy (Object *obj) throw () |
User method for object destroyment. More... | |
static void | InspectGarbageCollector () |
\ brief Methods to inspect how many objects pointers are remained More... | |
static bool | NameMatch (const std::string &name, const std::string &mask) |
Check if name matches to specified mask. More... | |
static bool | NameMatchM (const std::string &name, const std::string &mask) |
Check if name matches to specified mask. More... | |
static unsigned | NumInstances () |
Static variable counts total number of objects instances. More... | |
Protected Types | |
enum | ESocketEvents { evntEnableCheck = evntLastThrd+1 , evntLastSocketThrdEvent } |
Protected Types inherited from dabc::Thread | |
enum | EHaltActions { actDestroy = 1 , actHalt = 2 } |
enum | EThreadState { stCreated , stRunning , stStopped , stError , stChanging } |
typedef std::vector< WorkerRec * > | WorkersVector |
Protected Types inherited from dabc::Object | |
enum | EFlags { flStateMask = 0x000f , flIsOwner = 0x0010 , flCleanup = 0x0020 , flHasThread = 0x0040 , flAutoDestroy = 0x0080 , flLogging = 0x0100 , flNoMutex = 0x0200 , flHidden = 0x0400 , flChildsHidden = 0x0800 , flTopXmlLevel = 0x1000 } |
Protected Types inherited from dabc::PosixThread | |
typedef void *() | StartRoutine(void *) |
Protected Member Functions | |
virtual void | _Fire (const EventId &evnt, int nq) |
virtual void | ProcessExtraThreadEvent (const EventId &evid) |
Method to process events which are not processed by Thread class itself Should be used in derived classes for their events processing. More... | |
virtual bool | WaitEvent (EventId &, double tmout) |
virtual void | WorkersSetChanged () |
Virtual method, called from thread context to inform that number of workers are changed. More... | |
Protected Member Functions inherited from dabc::Thread | |
virtual bool | _DoDeleteItself () |
This method is called at the moment when DecReference think that object can be destroyed and wants to return true. More... | |
bool | _GetNextEvent (EventId &) |
void | _PushEvent (const EventId &arg, int nq) |
unsigned | _TotalNumberOfEvents () |
bool | AddWorker (Reference ref, bool sync=true) |
Internal DABC method, Add worker to thread; reference-safe Reference safe means - it is safe to call it as long as reference on thread is exists We use here reference on the worker to ensure that it does not disappear meanwhile. More... | |
void | ChangeRecursion (unsigned id, bool inc) |
Method which allows to control recursion of each worker. More... | |
double | CheckTimeouts (bool forcerecheck=false) |
int | CheckWorkerCanBeHalted (unsigned id, unsigned request=0, Command cmd=nullptr) |
Internal DABC method, used to verify if worker can be halted now while recursion is over Request indicates that halt action is requested : actDestroy = 1 or actHalt = 2. More... | |
virtual int | ExecuteThreadCommand (Command cmd) |
void | Fire (const EventId &arg, int nq) |
bool | HaltWorker (Worker *proc) |
Halt worker - stops any execution, break recursion. More... | |
void | IncWorkerFiredEvents (Worker *work) |
bool | InvokeWorkerDestroy (Worker *work) |
Cleanup object asynchronously. More... | |
bool | IsTemporaryThread () const |
Returns true is this is temporary thread for command execution. More... | |
unsigned | NumWorkers () |
Returns actual number of workers. More... | |
virtual void | ObjectCleanup () |
Cleanup thread that manager is allowed to delete it. More... | |
void | ProcessEvent (const EventId &) |
void | ProcessNoneEvent () |
int | RunCommandInTheThread (Worker *caller, Worker *dest, Command cmd) |
void | RunExplicitLoop () |
virtual void | RunnableCancelled () |
bool | SetExplicitLoop (Worker *work) |
Mutex * | ThreadMutex () const |
void | WorkerAddonChanged (Worker *work, bool assign=true) |
Called when worker addon changed on the fly. More... | |
Protected Member Functions inherited from dabc::Object | |
virtual void | _ChildsChanged () |
Method called when new childs are add or old are removed. More... | |
bool | _IsNormalState () |
Same as IsNormalState() but without mutex lock - user should lock mutex himself. More... | |
virtual Object * | CreateInstance (const std::string &name) |
Method used to create new item to be placed as child of the object. More... | |
void | DeleteThis () |
Method should be used by the object to delete itself. More... | |
virtual bool | DestroyByOwnThread () |
Internal DABC method, used to activate object cleanup via object thread Returns: false - object cannot be cleanup by the thread, true - thread guarantees that DestroyCalledFromOwnThread() will be called from thread context. More... | |
bool | DestroyCalledFromOwnThread () |
Internal DABC method, should be called by thread which was requested to destroy object. More... | |
void | FillFullName (std::string &fullname, Object *upto, bool exclude_top_parent=false) const |
Method used to produce full item name,. More... | |
bool | GetFlag (unsigned fl) const |
Return value of selected flag, not thread safe More... | |
bool | IsNormalState () |
Return true if object is in normal state. More... | |
unsigned | NumReferences () |
Return number of references on the object. More... | |
Object (const ConstructorPair &pair, unsigned flags=flIsOwner) | |
virtual void | ObjectDestroyed (Object *) |
Method called by the manager when registered dependent object is destroyed Should be used in user class to clear all references on the object to let destroy it. More... | |
Mutex * | ObjectMutex () const |
Returns mutex, used for protection of Object data members. More... | |
void | SetAutoDestroy (bool on=true) |
Set autodestroy flag for the object Once enabled, object will be destroyed when last reference will be cleared. More... | |
void | SetFlag (unsigned fl, bool on=true) |
Change value of selected flag, not thread safe More... | |
void | SetName (const char *name) |
Changes object name. More... | |
void | SetNameDirect (const char *name) |
Changes object name disregard of existing references. More... | |
void | SetOwner (bool on=true) |
Specifies if object will be owner of its new childs. More... | |
Protected Member Functions inherited from dabc::PosixThread | |
void | UseCurrentAsSelf () |
void | Cancel () |
Try to cancel thread execution. More... | |
bool | GetAffinity (bool actual, char *buf, unsigned maxbuf) |
Provides thread affinity in form of "xxxooooo". More... | |
Thread_t | Id () const |
bool | IsItself () const |
Returns true if called from thread context. More... | |
void | Join () |
Join thread - method waits until thread execution is completed. More... | |
void | Kill (int sig=9) |
Kill thread with specified signal. More... | |
PosixThread () | |
bool | SetAffinity (const char *aff) |
Sets affinity mask for the thread. More... | |
void | SetPriority (int prio) |
Change thread priority. More... | |
void | SetThreadName (const char *thrdname) |
Set thread name, which can be seen from htop. More... | |
void | Start (Runnable *run) |
Start thread with provided runnable. More... | |
void | Start (StartRoutine *func, void *args) |
Start thread with provided routine and call arguments. More... | |
virtual | ~PosixThread () |
Protected Member Functions inherited from dabc::Runnable | |
virtual | ~Runnable () |
Protected Attributes | |
ProcRec * | f_recs |
identify used processors More... | |
unsigned | f_sizeufds |
size of the structure, which was allocated More... | |
pollfd * | f_ufds |
list of file descriptors for poll call More... | |
int | fBalanceCnt |
counter for balancing of input events More... | |
bool | fCheckNewEvents |
flag indicate if sockets should be checked for new events even if there are already events in the queue More... | |
bool | fIsAnySocket |
indicates that at least one socket processors in the list More... | |
int | fPipe [2] |
array with i/o pipes handles More... | |
long | fPipeFired |
indicate if something was written in pipe More... | |
int | fScalerCounter |
variable used to test time to time sockets even if there are events in the queue More... | |
bool | fWaitFire |
indicates if pipe firing is awaited More... | |
Protected Attributes inherited from dabc::Thread | |
bool | fCheckThrdCleanup |
indicates if thread should be checked for clean up More... | |
bool | fDidDecRefCnt |
indicates if object cleanup was called - need in destructor More... | |
ExecWorker * | fExec |
processor to execute commands in the thread More... | |
unsigned | fExplicitLoop |
id of the worker, selected to run own explicit loop More... | |
TimeStamp | fLastProfileTime |
when doing profiling, last time when profiling was done More... | |
TimeStamp | fNextTimeout |
indicate when we expects next timeout More... | |
int | fNumQueues |
number of queues More... | |
int | fProcessingTimeouts |
indicate recursion in timeouts processing More... | |
bool | fProfiling |
if true, different statistic will be accumulated about thread More... | |
EventsQueue * | fQueues |
queues for threads events More... | |
bool | fRealThrd |
indicate if we create real thread and not running mainloop from top process More... | |
EThreadState | fState |
actual thread state More... | |
double | fThrdStopTimeout |
time in second set as timeout when stopping thred More... | |
bool | fThrdWorking |
flag indicates if mainloop of the thread should continue to work More... | |
double | fThreadRunTime |
total run time (user and sys), measured by getrusage More... | |
Condition | fWorkCond |
condition, which is used in default MainLoop implementation More... | |
WorkersVector | fWorkers |
vector of all processors More... | |
Protected Attributes inherited from dabc::Object | |
int | fObjectBlock |
counter for blocking calls, as long as non-zero, non of child can be removed More... | |
ReferencesVector * | fObjectChilds |
list of the child objects More... | |
unsigned | fObjectFlags |
flag, protected by the mutex More... | |
Mutex * | fObjectMutex |
mutex protects all private property of the object More... | |
std::string | fObjectName |
object name More... | |
Reference | fObjectParent |
reference on the parent object More... | |
int | fObjectRefCnt |
accounts how many references existing on the object, thread safe More... | |
Protected Attributes inherited from dabc::PosixThread | |
cpu_set_t | fCpuSet |
affinity property of the thread More... | |
pthread_t | fThrd |
pthread handle More... | |
Additional Inherited Members | |
Public Types inherited from dabc::Thread | |
enum | EEvents { evntCheckTmoutWorker = 1 , evntCheckTmoutAddon , evntCleanupThrd , evntDoNothing , evntStopThrd , evntLastThrd , evntUser = 10000 } |
enum | EPriority { priorityHighest = 0 , priorityNormal = 1 , priorityLowest = -1 } |
Static Protected Member Functions inherited from dabc::Object | |
static ConstructorPair | MakePair (const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
static ConstructorPair | MakePair (Object *prnt, const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
static ConstructorPair | MakePair (Reference prnt, const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
Static Protected Member Functions inherited from dabc::PosixThread | |
static bool | GetDfltAffinity (char *buf, unsigned maxbuf) |
Returns default affinity mask in form "xxxooosss". More... | |
static Thread_t | Self () |
static bool | SetDfltAffinity (const char *aff=nullptr) |
Sets default affinity for next threads to be created and for main process. More... | |
Static Protected Attributes inherited from dabc::Thread | |
static unsigned | fThreadInstances = 0 |
Static Protected Attributes inherited from dabc::PosixThread | |
static cpu_set_t | fDfltSet |
default affinity for new thread More... | |
static cpu_set_t | fSpecialSet |
set of processors, which can be used for special threads More... | |
Special thread class for handling sockets.
Definition at line 355 of file SocketThread.h.
|
protected |
Enumerator | |
---|---|
evntEnableCheck | event to enable again checking sockets for new events |
evntLastSocketThrdEvent | last event, which can be used by socket |
Definition at line 357 of file SocketThread.h.
Definition at line 1074 of file SocketThread.cxx.
|
virtual |
Definition at line 1105 of file SocketThread.cxx.
|
protectedvirtual |
Reimplemented from dabc::Thread.
Definition at line 1482 of file SocketThread.cxx.
|
protectedvirtual |
Reimplemented from dabc::Thread.
Definition at line 1465 of file SocketThread.cxx.
|
protectedvirtual |
Virtual method, called from thread context to inform that number of workers are changed.
Can be used by derived class to reorganize its structure
Reimplemented from dabc::Thread.
Definition at line 1660 of file SocketThread.cxx.
|
protectedvirtual |
Method to process events which are not processed by Thread class itself Should be used in derived classes for their events processing.
Reimplemented from dabc::Thread.
Definition at line 1649 of file SocketThread.cxx.
|
inlinevirtual |
Returns class name of the object instance.
In some cases class name used to correctly locate object in xml file
Reimplemented from dabc::Thread.
Definition at line 401 of file SocketThread.h.
|
virtual |
Reimplemented from dabc::Thread.
Definition at line 1130 of file SocketThread.cxx.
|
static |
Definition at line 1136 of file SocketThread.cxx.
|
static |
Definition at line 1152 of file SocketThread.cxx.
|
static |
Definition at line 1247 of file SocketThread.cxx.
|
static |
Wrapper for send method, should be used for blocking sockets.
Definition at line 1284 of file SocketThread.cxx.
|
static |
Wrapper for recv method, should be used for blocking sockets.
Definition at line 1289 of file SocketThread.cxx.
|
static |
Create datagram (udp) socket.
Definition at line 1353 of file SocketThread.cxx.
|
static |
Bind UDP socket to specified port.
[in] | fd | - socket descriptor, created with CreateUdp method |
[in] | nport | - port number to bind with |
[in] | portmin,portmax | - values range for possible port numbers |
Definition at line 1369 of file SocketThread.cxx.
|
static |
Close datagram (udp) socket.
Definition at line 1363 of file SocketThread.cxx.
|
static |
Attach datagram socket to multicast group to make receiving.
Definition at line 1294 of file SocketThread.cxx.
|
static |
Detach datagram socket from multicast group.
Definition at line 1337 of file SocketThread.cxx.
|
static |
Return current host name.
If configured, uses sockethost value from XML file
Definition at line 1159 of file SocketThread.cxx.
|
static |
Definition at line 1392 of file SocketThread.cxx.
|
static |
Create handle for server-side connection If hostname == 0, any available address will be selected If hostname == "", configured hostname or just $HOST variable will be used If hostname is not empty, only selected host will be tried to bin One could bind such connection to specified port or try to choose from available ports
Definition at line 1175 of file SocketThread.cxx.
|
static |
Definition at line 1418 of file SocketThread.cxx.
|
protected |
array with i/o pipes handles
Definition at line 367 of file SocketThread.h.
|
protected |
indicate if something was written in pipe
Definition at line 368 of file SocketThread.h.
|
protected |
indicates if pipe firing is awaited
Definition at line 369 of file SocketThread.h.
|
protected |
variable used to test time to time sockets even if there are events in the queue
Definition at line 370 of file SocketThread.h.
|
protected |
size of the structure, which was allocated
Definition at line 371 of file SocketThread.h.
|
protected |
list of file descriptors for poll call
Definition at line 372 of file SocketThread.h.
|
protected |
identify used processors
Definition at line 373 of file SocketThread.h.
|
protected |
indicates that at least one socket processors in the list
Definition at line 374 of file SocketThread.h.
|
protected |
flag indicate if sockets should be checked for new events even if there are already events in the queue
Definition at line 375 of file SocketThread.h.
|
protected |
counter for balancing of input events
Definition at line 376 of file SocketThread.h.