+ socket_stream->schedule = schedule;
+
+ if (socket_stream->notifier) {
+ /* Add the socket to scheduler. Safe to call if already added. */
+ silc_schedule_task_add_fd(socket_stream->schedule, socket_stream->sock,
+ silc_socket_stream_io, socket_stream);
+
+ /* Initially set socket for reading */
+ silc_schedule_set_listen_fd(socket_stream->schedule, socket_stream->sock,
+ SILC_TASK_READ, FALSE);
+ } else {
+ /* Unschedule the socket */
+ silc_schedule_unset_listen_fd(socket_stream->schedule,
+ socket_stream->sock);
+ silc_schedule_task_del_by_fd(socket_stream->schedule,
+ socket_stream->sock);
+ }
+}
+
+/* Return associated scheduler */
+
+SilcSchedule silc_socket_stream_get_schedule(SilcStream stream)
+{
+ SilcSocketStream socket_stream = stream;
+
+ if (!SILC_IS_SOCKET_STREAM(socket_stream))
+ return NULL;
+
+ return socket_stream->schedule;