Copyright © 2001 - 2005 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Protocol Interface SILC Public Key Payload Interface SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC Key Repository Library SILC SKR Interface SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC VCard Library SILC VCard Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC Math Library SILC MP Interface SILC Math Interface Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Structure SilcBuffer NAME
        typedef struct { ... } *SilcBuffer, SilcBufferStruct;
DESCRIPTION
        SILC Buffer object. Following short description of the fields
        of the buffer.
EXAMPLE
        unsiged char *head;

            Head of the allocated buffer. This is the start of the allocated
            data area and remains as same throughout the lifetime of the buffer.
            However, the end of the head area or the start of the currently valid
            data area is variable.

            --------------------------------
            | head  | data         | tail  |
            --------------------------------
            ^       ^

            Current head section in the buffer is sb->data - sb->head.

        unsigned char *data;

            Currently valid data area. This is the start of the currently valid
            main data area. The data area is variable in all directions.

            --------------------------------
            | head  | data         | tail  |
            --------------------------------
                    ^              ^

            Current valid data area in the buffer is sb->tail - sb->data.

         unsigned char *tail;

            Tail of the buffer. This is the end of the currently valid data area
            or start of the tail area. The start of the tail area is variable.

            --------------------------------
            | head  | data         | tail  |
            --------------------------------
                                   ^       ^

            Current tail section in the buffer is sb->end - sb->tail.

        unsigned char *end;

            End of the allocated buffer. This is the end of the allocated data
            area and remains as same throughout the lifetime of the buffer.
            Usually this field is not needed except when checking the size
            of the buffer.

            --------------------------------
            | head  | data         | tail  |
            --------------------------------
                                           ^

            Length of the entire buffer is (ie. truelen) sb->end - sb->head.

         Currently valid data area is considered to be the main data area in
         the buffer. However, the entire buffer is of course valid data and can
         be used as such. Usually head section of the buffer includes different
         kind of headers or similar. Data section includes the main data of
         the buffer. Tail section can be seen as a reserve space of the data
         section. Tail section can be pulled towards end, and thus the data
         section becomes larger.

     SILC Buffer is not thread-safe.  If the same SilcBuffer context must be
     used in multithreaded environment concurrency control must be employed.
SOURCE
        typedef struct SilcBufferObject {
          unsigned char *head;
          unsigned char *data;
          unsigned char *tail;
          unsigned char *end;
        } *SilcBuffer, SilcBufferStruct;
SILC Buffer Interface SilcBuffer silc_buffer_data silc_buffer_datalen silc_buffer_truelen silc_buffer_len silc_buffer_headlen silc_buffer_taillen silc_buffer_alloc silc_buffer_free silc_buffer_steal silc_buffer_purge silc_buffer_set silc_buffer_pull silc_buffer_push silc_buffer_pull_tail silc_buffer_push_tail silc_buffer_put_head silc_buffer_put silc_buffer_put_tail silc_buffer_alloc_size silc_buffer_reset silc_buffer_clear silc_buffer_start silc_buffer_end silc_buffer_copy silc_buffer_clone silc_buffer_realloc silc_buffer_realloc_size silc_buffer_enlarge silc_buffer_salloc silc_buffer_salloc_size silc_buffer_srealloc silc_buffer_srealloc_size silc_buffer_senlarge silc_buffer_scopy silc_buffer_sclone

Copyright © 2001 - 2005 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index