#include <bufrxmgr.h>
Definition at line 21 of file bufrxmgr.h.
◆ bufRxManager()
bufRxManager::bufRxManager |
( |
const std::string & |
n, |
|
|
unsigned int |
qdepth, |
|
|
unsigned int |
bsize = 0 |
|
) |
| |
Definition at line 63 of file bufrxmgr.cpp.
74 CBINIT(&received_cb, priorityMedium, &bufRxManager::received,
this);
76 for(
unsigned int i=0; i<qdepth; i++) {
77 buffer *t=(buffer*)callocMustSucceed(1,
sizeof(buffer)-1+m_bsize,
"bufRxManager buffer");
78 ellAdd(&freebufs, &t->node);
dataBufRx(const std::string &n)
#define CBINIT(ptr, prio, fn, valptr)
◆ ~bufRxManager()
bufRxManager::~bufRxManager |
( |
| ) |
|
|
virtual |
Definition at line 82 of file bufrxmgr.cpp.
88 for(node=ellFirst(&freebufs), next=node ? ellNext(node):NULL;
90 node=next, next=next ? ellNext(next) : NULL)
#define CONTAINER(ptr, structure, member)
◆ bsize()
unsigned int bufRxManager::bsize |
( |
| ) |
|
|
inline |
◆ dataRxAddReceive()
void bufRxManager::dataRxAddReceive |
( |
dataBufComplete |
fptr, |
|
|
void * |
arg = 0 |
|
) |
| |
|
virtual |
Register to receive data buffers.
- Parameters
-
id | Receive buffers with this Protocol ID. |
fptr[in] | Function pointer invoken after Rx |
arg[in] | Arbitrary pointer passed to completion function |
Implements dataBufRx.
Definition at line 191 of file bufrxmgr.cpp.
197 for(ELLNODE *node=ellFirst(&dispatch); node; node=ellNext(node))
201 if (l->fn==fn && l->fnarg==arg) {
210 ellAdd(&dispatch, &l->node);
#define CONTAINER(ptr, structure, member)
◆ dataRxDeleteReceive()
void bufRxManager::dataRxDeleteReceive |
( |
dataBufComplete |
fptr, |
|
|
void * |
arg = 0 |
|
) |
| |
|
virtual |
Unregister.
Implements dataBufRx.
Definition at line 214 of file bufrxmgr.cpp.
220 for(ELLNODE *node=ellFirst(&dispatch); node; node=ellNext(node))
223 if (l->fn==fn && l->fnarg==arg) {
224 ellDelete(&dispatch, node);
#define CONTAINER(ptr, structure, member)
◆ dataRxError()
Notification if Rx queue overflows.
If the queue overflows then the function is invoked with 'len' zero and 'buf' NULL. If a buffer with a length greater then the given maxlen is received then the function is invoked with 'len' set to the length of the discarded buffer and 'buf' NULL.
Implements dataBufRx.
Definition at line 183 of file bufrxmgr.cpp.
◆ getFree()
epicsUInt8 * bufRxManager::getFree |
( |
unsigned int * |
blen | ) |
|
Definition at line 98 of file bufrxmgr.cpp.
103 node=ellGet(&freebufs);
109 buffer *buf=
CONTAINER(node, buffer, node);
111 if (blen) *blen=
bsize();
#define CONTAINER(ptr, structure, member)
◆ haderror()
void bufRxManager::haderror |
( |
epicsStatus |
e | ) |
|
|
inlineprotected |
Definition at line 71 of file bufrxmgr.h.
71 {onerror(onerror_arg,e,0,NULL);}
◆ receive()
void bufRxManager::receive |
( |
epicsUInt8 * |
raw, |
|
|
unsigned int |
usedlen |
|
) |
| |
Definition at line 118 of file bufrxmgr.cpp.
124 buffer *buf=(buffer*)((
char*)(raw) - offsetof(buffer, data));
127 throw std::out_of_range(
"User admitted overflowing Rx buffer");
134 ellAdd(&freebufs, &buf->node);
137 errlogPrintf(
"buffer ignored\n");
144 ellAdd(&usedbufs, &buf->node);
147 callbackRequest(&received_cb);
The documentation for this class was generated from the following files: