liblogging: Todo List

Main Page | Compound List | File List | Compound Members | File Members | Related Pages

# Todo List

page liblogging - a slim library for reliable syslog
  The linked list of profiles is thread-safe). When a profile is added, it is immediatly available for the next connection. If a profile is removed, (

  implement this later!) the profile is immediately no longer be advertised in the greeting BUT it is actually removed only after the last channel using it has been closed.

Member srAPIObject::iUse3195Profiles
  create the methods for pUsr

Member sbChanTeardown (sbChanObj *pThis)
  take care of the pending_close state here (one we do this)

Member sbFramActualRecvFramCommonHdr (sbFramObj *pThis, sbChanObj *pChan)
  improve!

Member sbLstnBuildFrame (sbLstnObj *pThis, sbSessObj *pSess, char c, int *pbAbort)
  improve!

Member sbLstnRun (sbLstnObj *pThis)
  think of a smart way to handle iRet down here... For now, we just make sure BEEP is closed last, as this has the highest potential for errors.

Member sbLstnSendFram (sbLstnObj *pThis, sbSessObj *pSess)
  We need to upgrade either this method (or create another one so that it will send multiple frames if multiple frames are in the send queue. Right now, this is done by the select() loop anyhow, but it may be more efficient to do it that way (or it may be not, this needs some more thinking...).

Member sbLstnSendFram (sbLstnObj *pThis, sbSessObj *pSess)
  We need to see if race conditions can occur where pChan becomes invalid but is still stored with the message. It may be a better idea to use the "normal" channel lookup methods, though they are definitely slower... For now, we use an assert and will test this well.

  again, referencing the channel object as done below is a little dangerous...

Member sbLstnServerLoop (sbLstnObj *pThis)
  think a little about the performance implications of the below - we may think about either doubly linking the list or having the previous element at hand (e.g. in the linked list object...).

  log this once we have a logging subsystem

  think a little about the performance implications of the below - we may think about either doubly linking the list or having the previous element at hand (e.g. in the linked list object...).

  check & act on return value!!!! (close session? most probably...)

Member sbMIMEExtract (char *pszInBuf, int iInBufLen, char **pszMIMEHdr, char **pszPayload)
  handle empty string

Member sbSessDoCloseMesg (sbSessObj *pSess, int *pbAbort, sbProfObj *pProf, sbMesgObj *pMesg, sbNVTEObj *pEntry)
  See RFC for actual close processing - we do not do this fully correct right at this time! For syslog, it should be sufficient, but there can be interop issues!

Member sbSessLstnSendFram (sbSessObj *pThis, sbFramObj *pFram, sbChanObj *pChan)
  It may have some good performance impact, if we tried to send the data initially if there is no other send operation pending. That way, we would avoid en- and de-queueing the frame. But we would need to pay attention to the window! For now, we take the simpler approach - we can always performance tune once it works ;)

Member sbSessOpenChan (sbSessObj *pThis)
  think if we need to shut down anything else inside the BEEP session.

  think if we need to shut down anything else inside the BEEP session.

Member sbSessRecvFram (sbSessObj *pThis, sbChanObj *pChan)
  think about a timeout here - we could block indefinitely...

Member sbSessCloseChan (sbSessObj *pThis, struct sbChanObject *pChan)
  This method (and some of the plumbing behind) must be updated to be fully compliant to RFC 3080.

Member INVALID_SOCKET
  verify this value is indeed invalid under *nix

Member sbSockRecvFrom (sbSockObj *pThis, char *pRecvBuf, int *piBufLen, char **ppFrom)
  handle the connection closed case (*piBuflen == 0)

Member sbSockBind (sbSockObj *pThis, char *pszHost, int iPort)
  implement!

Member sbSockBind (sbSockObj *pThis, char *pszHost, int iPort)
  implement!

Member srAPIAddProfile (srAPIObj *pThis, sbProfObj *pProf)
  This method (and its helper FreeProf) is the same as in the beeplisten object. We may want to merge these two into a single utility method...

Member srAPIOpenlog (srAPIObj *pThis, char *pszRemotePeer, int iPort)
  later, make this depending on the lib option set by the user.