| Function silc_packet_stream_wrap
 
 SYNOPSIS
 
    SilcStream silc_packet_stream_wrap(SilcPacketStream stream,
                                       SilcPacketType type,
                                       SilcPacketFlags flags,
                                       SilcBool blocking_mode,
                                       SilcIdType src_id_type, void *src_id,
                                       SilcIdType dst_id_type, void *dst_id,
                                       SilcPacketWrapCoder coder,
                                       void *context);
DESCRIPTION
    Wraps the packet stream indicated by `stream' into a SilcStream for
    the packet type indicated by `type' with packet flags indicated by
    `flags'.  The returned SilcStream can be used to read and write the
    specified SILC packets with the specified packet flags, by calling
    silc_stream_read and silc_stream_write, respectively.  The returned
    stream can be destroyed by calling silc_stream_destroy.  It does not
    destroy the wrapped packet stream.
    If the `blocking_mode' mode is TRUE then the silc_stream_read and
    silc_stream_write may block the calling process or thread until SILC
    packet is read or written.  If it is FALSE the stream is in non-blocking
    mode and the calls never block.  The returned stream is thread-safe and
    packets may be read and written in multi-threaded environment.
    In non-blocking mode the silc_stream_set_notifier must be called before
    the returned stream can be used to read packets.  The stream status
    SILC_STREAM_CAN_READ will be returned to the notifier callback to
    indicate that a packet is ready for reading.  Calling silc_stream_read
    once returns one complete SILC packet data payload (which is of type of
    `type').
    If src_id and/or dst_id are set they will be used as the ids in the
    sent SILC packets.  If the dst_id is set then the stream will receive
    packets only originating from that id.
    The `coder' is optional encoder/decoder callback which the packet engine
    will call if it is non-NULL.  It can be used to encode additional data
    into each packet when silc_stream_write is called or decode data before
    it is passed to reader when silc_stream_read is called.  The `context'
    is passed to `coder'.
    The returned SilcStream can be used as any normal stream and all
    SilcStream API functions may be used with the stream.  This returns
    NULL on error.
 
 
 
 |