diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-01-10 15:01:49 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-01-10 15:01:49 +0000 |
commit | a244eb773908fa1f86a61ab52f2cad6224017e88 (patch) | |
tree | c4f2adf014a6778eca6b4df32964ecadd42c9ee4 /stream.c | |
parent | 28c44e9a7bf4f99279af94a96bac42d0379b27d0 (diff) | |
download | rsyslog-a244eb773908fa1f86a61ab52f2cad6224017e88.tar.gz rsyslog-a244eb773908fa1f86a61ab52f2cad6224017e88.tar.xz rsyslog-a244eb773908fa1f86a61ab52f2cad6224017e88.zip |
- implemented strm object serializer (untested as the code required for
test is not yet present - hen/egg problem...)
Diffstat (limited to 'stream.c')
-rw-r--r-- | stream.c | 50 |
1 files changed, 45 insertions, 5 deletions
@@ -71,11 +71,11 @@ static rsRetVal strmOpenFile(strm_t *pThis) if(pThis->fd != -1) ABORT_FINALIZE(RS_RET_OK); - if(pThis->pszFilePrefix == NULL) + if(pThis->pszFName == NULL) ABORT_FINALIZE(RS_RET_FILE_PREFIX_MISSING); CHKiRet(genFileName(&pThis->pszCurrFName, pThis->pszDir, pThis->lenDir, - pThis->pszFilePrefix, pThis->lenFilePrefix, pThis->iCurrFNum, pThis->iFileNumDigits)); + pThis->pszFName, pThis->lenFilePrefix, pThis->iCurrFNum, pThis->iFileNumDigits)); /* compute which flags we need to provide to open */ if(pThis->tOperationsMode == STREAMMODE_READ) @@ -517,10 +517,10 @@ strmSetFilePrefix(strm_t *pThis, uchar *pszPrefix, size_t iLenPrefix) if(iLenPrefix < 1) ABORT_FINALIZE(RS_RET_FILE_PREFIX_MISSING); - if((pThis->pszFilePrefix = malloc(sizeof(uchar) * iLenPrefix + 1)) == NULL) + if((pThis->pszFName = malloc(sizeof(uchar) * iLenPrefix + 1)) == NULL) ABORT_FINALIZE(RS_RET_OUT_OF_MEMORY); - memcpy(pThis->pszFilePrefix, pszPrefix, iLenPrefix + 1); /* always think about the \0! */ + memcpy(pThis->pszFName, pszPrefix, iLenPrefix + 1); /* always think about the \0! */ pThis->lenFilePrefix = iLenPrefix; finalize_it: @@ -602,16 +602,56 @@ dbgprintf("strmRecordEnd out %d\n", iRet); /* end stream record support functions */ +/* This method serializes a stream object. That means the whole + * object is modified into text form. That text form is suitable for + * later reconstruction of the object. + * The most common use case for this method is the creation of an + * on-disk representation of the message object. + * We do not serialize the dynamic properties. + * rgerhards, 2008-01-10 + */ +rsRetVal strmSerialize(strm_t *pThis, strm_t *pStrm) +{ + DEFiRet; + int i; + long l; + + assert(pThis != NULL); + assert(pStrm != NULL); + + CHKiRet(objBeginSerialize(pStrm, (obj_t*) pThis)); + + i = pThis->sType; + objSerializeSCALAR_VAR(pStrm, sType, INT, i); + objSerializeSCALAR(pStrm, iCurrFNum, INT); + objSerializePTR(pStrm, pszFName, PSZ); + i = pThis->tOperationsMode; + objSerializeSCALAR_VAR(pStrm, tOperationsMode, INT, i); + i = pThis->tOpenMode; + objSerializeSCALAR_VAR(pStrm, tOpenMode, INT, i); + i = (long) pThis->iMaxFileSize; + objSerializeSCALAR_VAR(pStrm, iMaxFileSize, LONG, l); + objSerializeSCALAR(pStrm, iMaxFiles, INT); + objSerializeSCALAR(pStrm, iFileNumDigits, INT); + + CHKiRet(objEndSerialize(pStrm)); + +finalize_it: + return iRet; +} + /* Initialize the stream class. Must be called as the very first method * before anything else is called inside this class. * rgerhards, 2008-01-09 */ BEGINObjClassInit(strm, 1) - //OBJSetMethodHandler(objMethod_SERIALIZE, strmSerialize); + OBJSetMethodHandler(objMethod_SERIALIZE, strmSerialize); //OBJSetMethodHandler(objMethod_SETPROPERTY, strmSetProperty); OBJSetMethodHandler(objMethod_CONSTRUCTION_FINALIZER, strmConstructFinalize); ENDObjClassInit(strm) + + /* * vi:set ai: */ |