Copyright © 2001 - 2007 SILC Project
SILC Project Website
SILC Toolkit Reference Manual
Index

SILC Toolkit Reference Manual
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 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 Engine Interface
    SILC Public Key Payload Interface
SILC Key Exchange Library
    SILC SKE Interface
    SILC Connection Authentication Interface
SILC VCard Library
    SILC VCard Interface
SILC Math Library
    SILC MP Interface
    SILC Math 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 ASN.1 Library
    SILC ASN.1 Interface
    SILC BER interface
SILC HTTP Library
    SILC HTTP Server Interface
    SILC HTTP PHP Translator
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 Application Utility Library
    SILC Application Utilities
    SILC ID Cache Interface
SILC SFTP Library
    SILC SFTP Interface
    SFTP Filesystems 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 - 2007 SILC Project
SILC Project Website
SILC Toolkit Reference Manual
Index