DABC (Data Acquisition Backbone Core)  2.9.9
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
verbs::VerbsNetworkInetrface Class Reference

Implementation of NetworkTransport for VERBS. More...

#include <verbs/Transport.h>

Inheritance diagram for verbs::VerbsNetworkInetrface:
verbs::WorkerAddon dabc::NetworkInetrface dabc::WorkerAddon dabc::Object

Public Member Functions

virtual void AllocateNet (unsigned fulloutputqueue, unsigned fullinputqueue)
 
bool AssignMultiGid (ibv_gid *multi_gid)
 
bool IsInitOk () const
 
bool IsUD () const
 
void SetUdAddr (struct ibv_ah *ud_ah, uint32_t ud_qpn, uint32_t ud_qkey)
 
virtual void SubmitRecv (uint32_t recid)
 
virtual void SubmitSend (uint32_t recid)
 
 VerbsNetworkInetrface (verbs::ContextRef ctx, QueuePair *qp)
 
virtual ~VerbsNetworkInetrface ()
 
- Public Member Functions inherited from verbs::WorkerAddon
virtual const char * ClassName () const
 Returns class name of the object instance. More...
 
void CloseQP ()
 
virtual void ProcessEvent (const dabc::EventId &)
 
QueuePairQP () const
 
virtual std::string RequiredThrdClass () const
 
void SetQP (QueuePair *qp)
 
QueuePairTakeQP ()
 
 WorkerAddon (QueuePair *qp)
 
virtual ~WorkerAddon ()
 
- Public Member Functions inherited from dabc::WorkerAddon
 WorkerAddon (const std::string &name)
 
- 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...
 
ObjectFindChild (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
 
ObjectGetChild (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...
 
ObjectGetParent () 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)
 
virtual void Print (int lvl=0)
 Print object content on debug output. More...
 
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 ()
 
- Public Member Functions inherited from dabc::NetworkInetrface
virtual ~NetworkInetrface ()
 

Protected Types

enum  Events { evntVerbsSendRec = evntVerbsLast , evntVerbsRecvRec , evntVerbsPool }
 
- 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 Member Functions

virtual long Notify (const std::string &, int)
 Light-weight command interface, which can be used from worker. More...
 
virtual void VerbsProcessOperError (uint32_t)
 
virtual void VerbsProcessRecvCompl (uint32_t)
 
virtual void VerbsProcessSendCompl (uint32_t)
 
- Protected Member Functions inherited from dabc::WorkerAddon
bool ActivateTimeout (double tmout_sec)
 
void DeleteAddonItself ()
 This is possibility to delete addon itself, invoking worker command. More...
 
void DeleteWorker ()
 This is way to delete worker with addon inclusive. More...
 
void FireWorkerEvent (unsigned evid)
 
virtual void ObjectCleanup ()
 User method to cleanup object content before it will be destroyed Main motivation is to release any references on other objects to avoid any cross-references and as result deadlocks in objects cleanup. More...
 
virtual void OnThreadAssigned ()
 
virtual double ProcessTimeout (double last_diff)
 
void SubmitWorkerCmd (Command cmd)
 
- Protected Member Functions inherited from dabc::Object
virtual void _ChildsChanged ()
 Method called when new childs are add or old are removed. More...
 
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 _IsNormalState ()
 Same as IsNormalState() but without mutex lock - user should lock mutex himself. More...
 
virtual ObjectCreateInstance (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...
 
MutexObjectMutex () 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 Attributes

int f_multi
 
bool f_multi_attch
 
ibv_gid f_multi_gid
 
uint16_t f_multi_lid
 
struct ibv_recv_wr * f_rwr
 
struct ibv_sge * f_sge
 
struct ibv_send_wr * f_swr
 
struct ibv_ah * f_ud_ah
 
uint32_t f_ud_qkey
 
uint32_t f_ud_qpn
 
verbs::ContextRef fContext
 
MemoryPoolfHeadersPool
 
bool fInitOk
 
PoolRegistryRef fPoolReg
 
unsigned fSegmPerOper
 
- Protected Attributes inherited from verbs::WorkerAddon
QueuePairfQP
 
- Protected Attributes inherited from dabc::WorkerAddon
Reference fWorker
 
- Protected Attributes inherited from dabc::Object
int fObjectBlock
 counter for blocking calls, as long as non-zero, non of child can be removed More...
 
ReferencesVectorfObjectChilds
 list of the child objects More...
 
unsigned fObjectFlags
 flag, protected by the mutex More...
 
MutexfObjectMutex
 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...
 

Friends

class Device
 

Additional Inherited Members

- Public Types inherited from verbs::WorkerAddon
enum  EVerbsProcEvents { evntVerbsSendCompl = dabc::Worker::evntFirstAddOn , evntVerbsRecvCompl , evntVerbsError , evntVerbsLast }
 
- 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...
 
- 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...
 

Detailed Description

Implementation of NetworkTransport for VERBS.

Definition at line 37 of file Transport.h.

Member Enumeration Documentation

◆ Events

Enumerator
evntVerbsSendRec 
evntVerbsRecvRec 
evntVerbsPool 

Definition at line 42 of file Transport.h.

Constructor & Destructor Documentation

◆ VerbsNetworkInetrface()

verbs::VerbsNetworkInetrface::VerbsNetworkInetrface ( verbs::ContextRef  ctx,
QueuePair qp 
)

Definition at line 24 of file Transport.cxx.

◆ ~VerbsNetworkInetrface()

verbs::VerbsNetworkInetrface::~VerbsNetworkInetrface ( )
virtual

Definition at line 44 of file Transport.cxx.

Member Function Documentation

◆ Notify()

long verbs::VerbsNetworkInetrface::Notify ( const std::string &  ,
int   
)
protectedvirtual

Light-weight command interface, which can be used from worker.

Reimplemented from dabc::WorkerAddon.

Definition at line 68 of file Transport.cxx.

◆ VerbsProcessSendCompl()

void verbs::VerbsNetworkInetrface::VerbsProcessSendCompl ( uint32_t  arg)
protectedvirtual

Reimplemented from verbs::WorkerAddon.

Definition at line 277 of file Transport.cxx.

◆ VerbsProcessRecvCompl()

void verbs::VerbsNetworkInetrface::VerbsProcessRecvCompl ( uint32_t  arg)
protectedvirtual

Reimplemented from verbs::WorkerAddon.

Definition at line 284 of file Transport.cxx.

◆ VerbsProcessOperError()

void verbs::VerbsNetworkInetrface::VerbsProcessOperError ( uint32_t  )
protectedvirtual

Reimplemented from verbs::WorkerAddon.

Definition at line 291 of file Transport.cxx.

◆ AssignMultiGid()

bool verbs::VerbsNetworkInetrface::AssignMultiGid ( ibv_gid *  multi_gid)

Definition at line 82 of file Transport.cxx.

◆ IsInitOk()

bool verbs::VerbsNetworkInetrface::IsInitOk ( ) const
inline

Definition at line 79 of file Transport.h.

◆ IsUD()

bool verbs::VerbsNetworkInetrface::IsUD ( ) const
inline

Definition at line 80 of file Transport.h.

◆ SetUdAddr()

void verbs::VerbsNetworkInetrface::SetUdAddr ( struct ibv_ah *  ud_ah,
uint32_t  ud_qpn,
uint32_t  ud_qkey 
)

Definition at line 75 of file Transport.cxx.

◆ AllocateNet()

void verbs::VerbsNetworkInetrface::AllocateNet ( unsigned  fulloutputqueue,
unsigned  fullinputqueue 
)
virtual

Implements dabc::NetworkInetrface.

Definition at line 115 of file Transport.cxx.

◆ SubmitSend()

void verbs::VerbsNetworkInetrface::SubmitSend ( uint32_t  recid)
virtual

Implements dabc::NetworkInetrface.

Definition at line 173 of file Transport.cxx.

◆ SubmitRecv()

void verbs::VerbsNetworkInetrface::SubmitRecv ( uint32_t  recid)
virtual

Implements dabc::NetworkInetrface.

Definition at line 231 of file Transport.cxx.

Friends And Related Function Documentation

◆ Device

friend class Device
friend

Definition at line 40 of file Transport.h.

Field Documentation

◆ fContext

verbs::ContextRef verbs::VerbsNetworkInetrface::fContext
protected

Definition at line 49 of file Transport.h.

◆ fInitOk

bool verbs::VerbsNetworkInetrface::fInitOk
protected

Definition at line 51 of file Transport.h.

◆ fPoolReg

PoolRegistryRef verbs::VerbsNetworkInetrface::fPoolReg
protected

Definition at line 52 of file Transport.h.

◆ f_rwr

struct ibv_recv_wr* verbs::VerbsNetworkInetrface::f_rwr
protected

Definition at line 53 of file Transport.h.

◆ f_swr

struct ibv_send_wr* verbs::VerbsNetworkInetrface::f_swr
protected

Definition at line 54 of file Transport.h.

◆ f_sge

struct ibv_sge* verbs::VerbsNetworkInetrface::f_sge
protected

Definition at line 55 of file Transport.h.

◆ fHeadersPool

MemoryPool* verbs::VerbsNetworkInetrface::fHeadersPool
protected

Definition at line 56 of file Transport.h.

◆ fSegmPerOper

unsigned verbs::VerbsNetworkInetrface::fSegmPerOper
protected

Definition at line 57 of file Transport.h.

◆ f_ud_ah

struct ibv_ah* verbs::VerbsNetworkInetrface::f_ud_ah
protected

Definition at line 58 of file Transport.h.

◆ f_ud_qpn

uint32_t verbs::VerbsNetworkInetrface::f_ud_qpn
protected

Definition at line 59 of file Transport.h.

◆ f_ud_qkey

uint32_t verbs::VerbsNetworkInetrface::f_ud_qkey
protected

Definition at line 60 of file Transport.h.

◆ f_multi

int verbs::VerbsNetworkInetrface::f_multi
protected

Definition at line 61 of file Transport.h.

◆ f_multi_gid

ibv_gid verbs::VerbsNetworkInetrface::f_multi_gid
protected

Definition at line 62 of file Transport.h.

◆ f_multi_lid

uint16_t verbs::VerbsNetworkInetrface::f_multi_lid
protected

Definition at line 63 of file Transport.h.

◆ f_multi_attch

bool verbs::VerbsNetworkInetrface::f_multi_attch
protected

Definition at line 64 of file Transport.h.


The documentation for this class was generated from the following files: