Provided by: ion-doc_3.2.1+dfsg-1.1_all bug

NAME

       bss - Bundle Streaming Service library

SYNOPSIS

           #include "bss.h"

           typedef int (*RTBHandler)(time_t time, unsigned long count, char *buffer, int bufLength);

           [see description for available functions]

DESCRIPTION

       The BSS library supports the streaming of data over delay-tolerant networking (DTN) bundles.  The intent
       of the library is to enable applications that pass streaming data received in transmission time order
       (i.e., without time regressions) to an application-specific "display" function -- notionally for
       immediate real-time display -- but to store all received data (including out-of-order data) in a private
       database for playback under user control.  The reception and real-time display of in-order data is
       performed by a background thread, leaving the application's main (foreground) thread free to respond to
       user commands controlling playback or other application-specific functions.

       The application-specific "display" function invoked by the background thread must conform to the
       RTBHandler type definition.  It must return 0 on success, -1 on any error that should terminate the
       background thread.  Only on return from this function will the background thread proceed to acquire the
       next BSS payload.

       All data acquired by the BSS background thread is written to a BSS database comprising three files:
       table, list, and data.  The name of the database is the root name that is common to the three files,
       e.g., db3.tbl, db3.lst, db3.dat would be the three files making up the db3 BSS database.  All three files
       of the selected BSS database must reside in the same directory of the file system.

       Several replay navigation functions in the BSS library require that the application provide a navigation
       state structure of type bssNav as defined in the bss.h header file.  The application is not reponsible
       for populating this structure; it's strictly for the private use of the BSS library.

       int bssOpen(char *bssName, char *path, char *eid)
           Opens  access  to  a  BSS  database,  to  enable  data playback.  bssName identifies the specific BSS
           database that is to be opened.  path identifies the directory in which the database resides.  eid  is
           ignored.  On any failure, returns -1.  On success, returns zero.

       int bssStart(char *bssName, char *path, char *eid, char *buffer, int bufLen, RTBHandler handler)
           Starts a BSS data acquisition background thread.  bssName identifies the BSS database into which data
           will be acquired.  path identifies the directory in which that database resides.  eid is used to open
           the  BP  endpoint  at  which  the  delivered  BSS  bundle  payload contents will be acquired.  buffer
           identifies a data acquisition buffer, which must be provided by the application, and bufLen indicates
           the length of that buffer; received bundle payloads in excess of this length will be discarded.

           handler identifies the display function to which each in-order bundle payload will  be  passed.   The
           time  and  count  parameters  passed  to  this  function identify the received bundle, indicating the
           bundle's creation timestamp time (in seconds) and counter value.  The buffer and bufLength parameters
           indicate the location into which the bundle's payload was acquired and the  length  of  the  acquired
           payload.   handler  must return -1 on any unrecoverable system error, 0 otherwise.  A return value of
           -1 from handler will terminate the BSS data acquisition background thread.

           On any failure, returns -1.  On success, returns zero.

       int bssRun(char *bssName, char *path, char *eid, char *buffer, int bufLen, RTBHandler handler)
           A convenience function that performs both bssOpen() and bssStart().  On any failure, returns -1.   On
           success, returns zero.

       void bssClose()
           Terminates data playback access to the most recently opened BSS database.

       void bssStop()
           Terminates the most recently initiated BSS data acquisition background thread.

       void bssExit()
           A convenience function that performs both bssClose() and bssStop().

       long bssRead(bssNav nav, char *data, int dataLen)
           Copies  the data at the current playback position in the database, as indicated by nav, into data; if
           the length of the data is in excess of dataLen then an error  condition  is  asserted  (i.e.,  -1  is
           returned).  Note that bssRead() cannot be successfully called until nav has been populated, nominally
           by a preceding call to bssSeek(), bssNext(), or bssPrev().  Returns the length of data read, or -1 on
           any error.

       long bssSeek(bssNav *nav, time_t time, time_t *curTime, unsigned long *count)
           Sets  the  current playback position in the database, in nav, to the data received in the bundle with
           the earliest creation time that was greater than or equal to time.  Populates nav  and  also  returns
           the  creation  time  and  bundle ID count of that bundle in curTime and count.  Returns the length of
           data at this location, or -1 on any error.

       long bssSeek_read(bssNav *nav, time_t time, time_t *curTime, unsigned long *count, char *data, int
       dataLen)
           A convenience function that performs bssSeek() followed by an immediate bssRead() to return the  data
           at the new playback position.  Returns the length of data read, or -1 on any error.

       long bssNext(bssNav *nav, time_t *curTime, unsigned long *count)
           Sets  the  playback  position  in  the  database, in nav, to the data received in the bundle with the
           earliest creation time and ID count greater than that of the bundle at the current playback position.
           Populates nav and also returns the creation time and bundle ID count of that bundle  in  curTime  and
           count.   Returns  the  length of data at this location (if any), -2 on reaching end of list, or -1 on
           any error.

       long bssNext_read(bssNav *nav, time_t *curTime, unsigned long *count, char *data, int dataLen)
           A convenience function that performs bssNext() followed by an immediate bssRead() to return the  data
           at  the new playback position.  Returns the length of data read, -2 on reaching end of list, or -1 on
           any error.

       long bssPrev(bssNav *nav, time_t *curTime, unsigned long *count)
           Sets the playback position in the database, in nav, to the data  received  in  the  bundle  with  the
           latest  creation  time and ID count earlier than that of the bundle at the current playback position.
           Populates nav and also returns the creation time and bundle ID count of that bundle  in  curTime  and
           count.   Returns  the  length of data at this location (if any), -2 on reaching end of list, or -1 on
           any error.

       long bssPrev_read(bssNav *nav, time_t *curTime, unsigned long *count, char *data, int dataLen)
           A convenience function that performs bssPrev() followed by an immediate bssRead() to return the  data
           at  the new playback position.  Returns the length of data read, -2 on reaching end of list, or -1 on
           any error.

SEE ALSO

       bp(3)

perl v5.24.1                                       2016-07-07                             bss::doc::pod3::bss(3)