Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2005 - 2007 Pekka Riikonen
+ Copyright (C) 2005 - 2008 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
*/
-/****h* silcutil/SILC Socket Stream Interface
+/****h* silcutil/Socket Stream Interface
*
* DESCRIPTION
*
#ifndef SILCSOCKETSTREAM_H
#define SILCSOCKETSTREAM_H
-/****d* silcutil/SilcSocketStreamAPI/SilcSocketStreamStatus
- *
- * NAME
- *
- * typedef enum { ... } SilcStreamStatus;
- *
- * DESCRIPTION
- *
- * Socket Stream status. This status is returned into the
- * SilcSocketStreamCallback function after the socket stream is
- * created.
- *
- * SOURCE
- */
-typedef enum {
- SILC_SOCKET_OK, /* Normal status */
- SILC_SOCKET_UNKNOWN_IP, /* Remote does not have IP address */
- SILC_SOCKET_UNKNOWN_HOST, /* Remote does not have host name */
- SILC_SOCKET_NO_MEMORY, /* System out of memory */
- SILC_SOCKET_ERROR, /* Unknown error */
-} SilcSocketStreamStatus;
-/***/
-
-/****f* silcutil/SilcSocketStreamAPI/SilcSocketStreamCallback
+/****f* silcutil/SilcSocketStreamCallback
*
* SYNOPSIS
*
- * typedef void (*SilcSocketStreamCallback)(SilcSocketStreamStatus status,
+ * typedef void (*SilcSocketStreamCallback)(SilcResult status,
* SilcStream stream,
* void *context);
*
* functions can also be used to read data, send data, and otherwise
* handle the stream.
*
+ * If the silc_stream_set_notifier is called the stream will be set to
+ * non-blocking mode.
+ *
***/
-typedef void (*SilcSocketStreamCallback)(SilcSocketStreamStatus status,
+typedef void (*SilcSocketStreamCallback)(SilcResult status,
SilcStream stream, void *context);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_tcp_stream_create
+/****f* silcutil/silc_socket_tcp_stream_create
*
* SYNOPSIS
*
* will not be available from the socket stream. In that case this will
* also return NULL as the `callback' is called immediately.
*
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode. If `schedule' is NULL this will call
+ * silc_schedule_get_global to try to get global scheduler.
+ *
***/
SilcAsyncOperation
silc_socket_tcp_stream_create(SilcSocket sock, SilcBool lookup,
SilcSocketStreamCallback callback,
void *context);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_udp_stream_create
+/****f* silcutil/silc_socket_udp_stream_create
*
* SYNOPSIS
*
*
* This function returns the created SilcStream or NULL on error.
*
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode. If `schedule' is NULL this will call
+ * silc_schedule_get_global to try to get global scheduler.
+ *
***/
SilcStream silc_socket_udp_stream_create(SilcSocket sock,
SilcBool ipv6,
SilcBool connected,
SilcSchedule schedule);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_stream_is_udp
+/****f* silcutil/silc_socket_stream_is_udp
*
* SYNOPSIS
*
***/
SilcBool silc_socket_stream_is_udp(SilcStream stream, SilcBool *connected);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_stream_get_info
+/****f* silcutil/silc_socket_stream_get_info
*
* SYNOPSIS
*
SilcSocket *sock, const char **hostname,
const char **ip, SilcUInt16 *port);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_stream_set_info
+/****f* silcutil/silc_socket_stream_set_info
*
* SYNOPSIS
*
const char *hostname,
const char *ip, SilcUInt16 port);
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_stream_get_error
- *
- * SYNOPSIS
- *
- * int silc_socket_stream_get_error(SilcStream stream);
- *
- * DESCRIPTION
- *
- * If error occurred during socket stream operations, this function
- * can be used to retrieve the error number that occurred.
- *
- ***/
-int silc_socket_stream_get_error(SilcStream stream);
-
-/****f* silcutil/SilcSocketStreamAPI/silc_socket_stream_set_qos
+/****f* silcutil/silc_socket_stream_set_qos
*
* SYNOPSIS
*
* more than `read_limit_bytes' of data. The `limit_sec' and `limit_usec'
* specifies the time limit that is applied if `read_rate' and/or
* `read_limit_bytes' is reached. If all arguments except `stream'
- * are zero this resets the QoS from the socket stream, all QoS for
+ * are zero this resets the QoS from the socket stream, all QoS data for
* this socket stream that may be pending will be cancelled.
*
***/