From faf8e5a3849621acfbd0a0887f2e924a40cb029a Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Fri, 4 Jan 2008 16:05:42 +0000 Subject: - begun some work on Msg Object serializiation - created a kind of general base class --- queue.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'queue.c') diff --git a/queue.c b/queue.c index bf0d1261..c972af6c 100644 --- a/queue.c +++ b/queue.c @@ -230,9 +230,12 @@ rsRetVal qAddDisk(queue_t *pThis, void* pUsr) { DEFiRet; int i; + long lenBuf; + uchar *pBuf; assert(pThis != NULL); dbgprintf("writing to file %d\n", pThis->tVars.disk.fd); + CHKiRet(pThis->serializer(pBuf, &lenBuf, pUsr)); // TODO: hier weiter machen! i = write(pThis->tVars.disk.fd, "entry\n", 6); dbgprintf("write wrote %d bytes, errno: %d, err %s\n", i, errno, strerror(errno)); @@ -354,7 +357,10 @@ queueWorker(void *arg) } /* Constructor for the queue object */ -rsRetVal queueConstruct(queue_t **ppThis, queueType_t qType, int iMaxQueueSize, rsRetVal (*pConsumer)(void*)) +rsRetVal queueConstruct(queue_t **ppThis, queueType_t qType, int iMaxQueueSize, rsRetVal (*pConsumer)(void*), + rsRetVal (*serializer)(uchar **ppOutBuf, size_t *lenBuf, void *pUsr), + rsRetVal (*deSerializer)(void *ppUsr, uchar *ppBuf, size_t lenBuf) + ) { DEFiRet; queue_t *pThis; @@ -378,6 +384,8 @@ rsRetVal queueConstruct(queue_t **ppThis, queueType_t qType, int iMaxQueueSize, pThis->notEmpty = (pthread_cond_t *) malloc (sizeof (pthread_cond_t)); pthread_cond_init (pThis->notEmpty, NULL); pThis->qType = qType; + pThis->serializer = serializer; + pThis->deSerializer = deSerializer; /* set type-specific handlers */ switch(qType) { -- cgit v1.2.3