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 SilcStreamOps NAME
        typedef struct { ... } SilcStreamOps;
DESCRIPTION
        SILC Stream operations structure.  This structure includes callback
        functions to the actual stream implementation.  Any stream that
        use SILC Stream abstraction must fill this structure with the actual
        stream implementation.

        Each stream implementation MUST set this structure as the first field
        in their stream structure.  As it is that structure that is passed
        to the silc_stream_* routines, the SILC Stream API expects that the
        SilcStream context starts with this structure.
EXAMPLE
        typedef struct {
          const SilcStreamOps *ops;
          ... other stuff ...
        } *SilcFooStream;

        SilcFooStream foo;
        silc_stream_write(foo, data, data_len);
SOURCE
        typedef struct {
          /* This is called to read data from the stream.  This is called when
             silc_stream_read function was called. */
          int (*read)(SilcStream stream, unsigned char *buf, SilcUInt32 buf_len);

          /* This is called when writing data to the stream.  This is called when
             silc_stream_write function was called. */
          int (*write)(SilcStream stream, const unsigned char *data,
                       SilcUInt32 data_len);

          /* This is called to close the stream.  This is called when the
             silc_stream_close function was called. */
          SilcBool (*close)(SilcStream stream);

          /* This is called to destroy the stream.  This is called when the
             silc_stream_destroy function was called. */
          void (*destroy)(SilcStream stream);

          /* This is called to set a notifier callback to the stream and schedule
             the stream.  Stream should not be scheduled before calling this
             function.  If stream does not need scheduler then the scheduler can
             be ignored.  This is called when silc_stream_set_notifier was called.
             Returns FALSE if the stream could not be scheduled. */
          SilcBool (*notifier)(SilcStream stream, SilcSchedule schedule,
                               SilcStreamNotifier callback, void *context);

          /* This is called to return the associated scheduler, if set.  This is
             called when silc_stream_get_schedule was called. */
          SilcSchedule (*get_schedule)(SilcStream stream);
        } SilcStreamOps;
SILC Stream Interface SilcStream SilcStreamStatus SilcStreamNotifier SilcStreamOps silc_stream_read silc_stream_write silc_stream_close silc_stream_destroy silc_stream_set_notifier silc_stream_get_schedule

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