Created SILC Crypto Toolkit git repository.
[crypto.git] / lib / silcutil / silcstream.h
diff --git a/lib/silcutil/silcstream.h b/lib/silcutil/silcstream.h
deleted file mode 100644 (file)
index 85364d2..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
-
-  silcstream.h
-
-  Author: Pekka Riikonen <priikone@silcnet.org>
-
-  Copyright (C) 2005 - 2007 Pekka Riikonen
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-*/
-
-/****h* silcutil/SILC Stream Interface
- *
- * DESCRIPTION
- *
- * SILC Stream API is a generic representation of a stream.  A common API
- * is defined that can be used to read from and write to the stream.  Any
- * other stream API derived from this API can use this same interface for
- * reading and writing.
- *
- * Note that stream implementations usually are not thread-safe.  Always
- * verify whether a stream implementation is thread-safe by checking their
- * corresponding documentation.
- *
- ***/
-
-#ifndef SILCSTREAM_H
-#define SILCSTREAM_H
-
-/****s* silcutil/SilcStreamAPI/SilcStream
- *
- * NAME
- *
- *    typedef void *SilcStream;
- *
- * DESCRIPTION
- *
- *    Abstact stream context representing any stream.  All streams are using
- *    this abstraction so that the stream can be accessed using the standard
- *    silc_stream_* functions.  All streams are destroyed by calling the
- *    silc_stream_destroy function.
- *
- ***/
-typedef void *SilcStream;
-
-/****d* silcutil/SilcStreamAPI/SilcStreamStatus
- *
- * NAME
- *
- *    typedef enum { ... } SilcStreamStatus;
- *
- * DESCRIPTION
- *
- *    Stream status.  This status is returned into the SilcStreamNotifier
- *    callback function to indicate the status of the stream at a given
- *    moment.
- *
- * SOURCE
- */
-typedef enum {
-  SILC_STREAM_CAN_READ,                /* Data available for reading */
-  SILC_STREAM_CAN_WRITE,       /* Stream ready for writing */
-} SilcStreamStatus;
-/***/
-
-/****f* silcutil/SilcStreamAPI/SilcStreamNotifier
- *
- * SYNOPSIS
- *
- *    typedef void (*SilcStreamNotifier)(SilcStream stream,
- *                                       SilcStreamStatus status,
- *                                       void *context);
- *
- * DESCRIPTION
- *
- *    A callback of this type is called as stream notifier to notify of a
- *    certain action taken over the stream.  This is called to notify for
- *    example that data is ready for reading, or writing or that end of
- *    stream occurred.
- *
- ***/
-typedef void (*SilcStreamNotifier)(SilcStream stream,
-                                  SilcStreamStatus status,
-                                  void *context);
-
-/****s* silcutil/SilcStreamAPI/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;
-/***/
-
-/****f* silcutil/SilcStreamAPI/silc_stream_read
- *
- * SYNOPSIS
- *
- *    int silc_stream_read(SilcStream stream, unsigned char *buf,
- *                         SilcUInt32 buf_len);
- *
- * DESCRIPTION
- *
- *    Reads data from the stream indicated by `stream' into the data buffer
- *    indicated by `buf' which is size of `buf_len'.  This returns the amount
- *    of data read, zero (0) if end of stream occurred, -1 if data could
- *    not be read at this moment, or -2 if error occurred.  If -1 is returned
- *    the notifier callback will later be called with SILC_STREAM_CAN_READ
- *    status when stream is again ready for reading.
- *
- *    If error occurred the error code can be retrieved with silc_errno.
- *
- ***/
-int silc_stream_read(SilcStream stream, unsigned char *buf,
-                    SilcUInt32 buf_len);
-
-/****f* silcutil/SilcStreamAPI/silc_stream_write
- *
- * SYNOPSIS
- *
- *    int silc_stream_write(SilcStream stream, const unsigned char *data,
- *                          SilcUInt32 data_len);
- *
- * DESCRIPTION
- *
- *    Writes `data_len' bytes of data to the stream indicated by `stream' from
- *    data buffer indicated by `data'.  Returns the amount of data written,
- *    zero (0) if end of stream occurred, -1 if data could not be written
- *    at this moment, or -2 if error occurred.  If -1 is returned the
- *    notifier callback will later be called with SILC_STREAM_CAN_WRITE
- *    status when stream is again ready for writing.
- *
- *    If error occurred the error code can be retrieved with silc_errno.
- *
- ***/
-int silc_stream_write(SilcStream stream, const unsigned char *data,
-                     SilcUInt32 data_len);
-
-/****f* silcutil/SilcStreamAPI/silc_stream_close
- *
- * SYNOPSIS
- *
- *    SilcBool silc_stream_close(SilcStream stream);
- *
- * DESCRIPTION
- *
- *    Closes the stream indicated by `stream'.  No data can be read or written
- *    to the stream after calling this function.  Return TRUE if the stream
- *    could be closed.  If action is taken on closed stream the notifier
- *    callback may be called with an error status.
- *
- ***/
-SilcBool silc_stream_close(SilcStream stream);
-
-/****f* silcutil/SilcStreamAPI/silc_stream_destroy
- *
- * SYNOPSIS
- *
- *    void silc_stream_destroy(SilcStream stream);
- *
- * DESCRIPTION
- *
- *    Destroy the stream indicated by `stream'.  The `stream' will become
- *    invalid after this function returns.  All streams are destroyed by
- *    calling this function.  The silc_stream_close should be called
- *    before calling this function.  However, if it is not called this
- *    function will call it.
- *
- ***/
-void silc_stream_destroy(SilcStream stream);
-
-/****f* silcutil/SilcStreamAPI/silc_stream_set_notifier
- *
- * SYNOPSIS
- *
- *    SilcBool silc_stream_set_notifier(SilcStream stream,
- *                                      SilcSchedule schedule,
- *                                      SilcStreamNotifier notifier,
- *                                      void *context);
- *
- * DESCRIPTION
- *
- *    Schedule `stream' for stream events.  Set the `notifier' callback to
- *    be called when some event takes place on the stream.  The event will
- *    be delievered to the `notifier' callback with the `context'.  It is
- *    called for example when data is available for reading or writing, or
- *    if an error occurs.  This can be called at any time for valid stream.
- *    This call will also set the `stream' into non-blocking mode.
- *
- *    If `notifier' is set to NULL no callback will be called for the stream,
- *    and the stream is not scheduled anymore.
- *
- *    This function returns FALSE if the stream could not be scheduled.
- *    Returns TRUE on success.  The `schedule' must always be non-NULL.
- *
- ***/
-SilcBool silc_stream_set_notifier(SilcStream stream, SilcSchedule schedule,
-                                 SilcStreamNotifier notifier, void *context);
-
-/****f* silcutil/SilcStreamAPI/silc_stream_get_schedule
- *
- * SYNOPSIS
- *
- *    SilcSchedule silc_stream_get_schedule(SilcStream stream);
- *
- * DESCRIPTION
- *
- *    Returns the scheduler that has been associated with the `stream', or
- *    NULL if one has not been set for the `stream'.
- *
- ***/
-SilcSchedule silc_stream_get_schedule(SilcStream stream);
-
-#endif /* SILCSTREAM_H */