updates.
[website.git] / docs / toolkit / manual / silcschedule.html
1
2 <html>
3 <head>
4  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-a" />
5  <meta http-equiv="Content-Language" content="en" />
6  <meta name="description" content="SILC Secure Internet Live Conferencing" />
7  <meta name="keywords" content="SILC, secure, chat, protocol, cipher, encrypt, SKE" />
8  <meta content="INDEX, FOLLOW" name="ROBOTS" />
9  <style type="text/css">
10   <!--
11   body { color: #000000; background: #f0f0f0; font-family: Helvetica, Arial, Sans-serif; }
12   a:link { text-decoration: none; color: #2f488f; }
13   a:visited { text-decoration: none;color: #2f488f; }
14   a:active { text-decoration: none; color: #2f488f; }
15   -->
16  </style>
17 </head>
18
19 <body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
20
21 <table border="0" cellspacing="0" cellpadding="6" width="100%">
22  <tr valign="top" bgcolor="#dddddd">
23   <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
24     <a href="http://silcnet.org">SILC Project Website</a></small></td>
25   <td align="right"><small>
26    <a href="index.html">SILC Toolkit Reference Manual</a><br />
27    <a href="toolkit_index.html">Index</a></small></td>
28    </small></td>
29  </tr>
30 </table>
31 <table border="0" cellspacing="0" cellpadding="0" width="100%">
32 <tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
33 </table>
34
35 <table cellpadding="0" cellspacing="0" border="0">
36  <tr valign="top">
37
38   <td width="200" bgcolor="#f0f0f0">
39    <img src="space.gif" width="1" height="1" border="0" alt="">
40    <table width="100%" cellpadding="2" cellspacing="2" border="0">
41     <tr valign="top"><td>
42 <br />
43 <small>
44 <!-- Template file for the big index that appears in the Toolkit reference
45 manual on the left side.  With this file it is possible to add other than
46 automatically generated links to that list. -->
47
48 <a href="index.html"><img src="box.gif" border="0" alt="">SILC Toolkit Reference Manual</a><br />
49
50
51 <a href=silccryptlib.html><img src=box.gif border=0 alt=>SILC Crypto Library</a><br />
52 &nbsp;&nbsp;&nbsp; <a href=silcrng_intro.html><img src=box2.gif border=0 alt=>Introduction to SILC RNG</a><br />
53 &nbsp;&nbsp;&nbsp; <a href=silcrng.html><img src=box2.gif border=0 alt=>SILC RNG Interface</a><br />
54 &nbsp;&nbsp;&nbsp; <a href=silccipher.html><img src=box2.gif border=0 alt=>SILC Cipher API</a><br />
55 &nbsp;&nbsp;&nbsp; <a href=silcpkcs.html><img src=box2.gif border=0 alt=>SILC PKCS API</a><br />
56 &nbsp;&nbsp;&nbsp; <a href=silcpk.html><img src=box2.gif border=0 alt=>SILC Public Key API</a><br />
57 &nbsp;&nbsp;&nbsp; <a href=silcpkcs1.html><img src=box2.gif border=0 alt=>SILC PKCS #1 API</a><br />
58 &nbsp;&nbsp;&nbsp; <a href=silchash.html><img src=box2.gif border=0 alt=>SILC Hash Interface</a><br />
59 &nbsp;&nbsp;&nbsp; <a href=silchmac.html><img src=box2.gif border=0 alt=>SILC HMAC Interface</a><br />
60 <a href=silccorelib.html><img src=box.gif border=0 alt=>SILC Core Library</a><br />
61 &nbsp;&nbsp;&nbsp; <a href=silcauth.html><img src=box2.gif border=0 alt=>SILC Authentication Interface</a><br />
62 &nbsp;&nbsp;&nbsp; <a href=silcmessage.html><img src=box2.gif border=0 alt=>SILC Message Interface</a><br />
63 &nbsp;&nbsp;&nbsp; <a href=silcchannel.html><img src=box2.gif border=0 alt=>SILC Channel Interface</a><br />
64 &nbsp;&nbsp;&nbsp; <a href=silccommand.html><img src=box2.gif border=0 alt=>SILC Command Interface</a><br />
65 &nbsp;&nbsp;&nbsp; <a href=silcnotify.html><img src=box2.gif border=0 alt=>SILC Notify Interface</a><br />
66 &nbsp;&nbsp;&nbsp; <a href=silcstatus.html><img src=box2.gif border=0 alt=>SILC Status Types</a><br />
67 &nbsp;&nbsp;&nbsp; <a href=silcmode.html><img src=box2.gif border=0 alt=>SILC Modes</a><br />
68 &nbsp;&nbsp;&nbsp; <a href=silcid.html><img src=box2.gif border=0 alt=>SILC ID Interface</a><br />
69 &nbsp;&nbsp;&nbsp; <a href=silcargument.html><img src=box2.gif border=0 alt=>SILC Argument Interface</a><br />
70 &nbsp;&nbsp;&nbsp; <a href=silcattrs.html><img src=box2.gif border=0 alt=>SILC Attributes Interface</a><br />
71 &nbsp;&nbsp;&nbsp; <a href=silcpacket.html><img src=box2.gif border=0 alt=>Packet Engine Interface</a><br />
72 &nbsp;&nbsp;&nbsp; <a href=silcpubkey.html><img src=box2.gif border=0 alt=>SILC Public Key Payload Interface</a><br />
73 <a href=silcskelib.html><img src=box.gif border=0 alt=>SILC Key Exchange Library</a><br />
74 &nbsp;&nbsp;&nbsp; <a href=silcske.html><img src=box2.gif border=0 alt=>SILC SKE Interface</a><br />
75 &nbsp;&nbsp;&nbsp; <a href=silcconnauth.html><img src=box2.gif border=0 alt=>SILC Connection Authentication Interface</a><br />
76 <a href=silcvcardlib.html><img src=box.gif border=0 alt=>SILC VCard Library</a><br />
77 &nbsp;&nbsp;&nbsp; <a href=silcvcard.html><img src=box2.gif border=0 alt=>SILC VCard Interface</a><br />
78 <a href=silcmathlib.html><img src=box.gif border=0 alt=>SILC Math Library</a><br />
79 &nbsp;&nbsp;&nbsp; <a href=silcmp.html><img src=box2.gif border=0 alt=>SILC MP Interface</a><br />
80 &nbsp;&nbsp;&nbsp; <a href=silcmath.html><img src=box2.gif border=0 alt=>SILC Math Interface</a><br />
81 <a href=silcclientlib.html><img src=box.gif border=0 alt=>SILC Client Library</a><br />
82 &nbsp;&nbsp;&nbsp; <a href=silcclient_using.html><img src=box2.gif border=0 alt=>Using SILC Client Library Tutorial</a><br />
83 &nbsp;&nbsp;&nbsp; <a href=command_reply_args.html><img src=box2.gif border=0 alt=>Arguments for <b>command_reply</b> Client Operation</a><br />
84 &nbsp;&nbsp;&nbsp; <a href=silcstatus_args.html><img src=box2.gif border=0 alt=>SilcStatus Error Arguments in <b>command_reply</b> Client Operation</a><br />
85 &nbsp;&nbsp;&nbsp; <a href=notifyargs.html><img src=box2.gif border=0 alt=>Arguments for <b>notify</b> Client Operation</a><br />
86 &nbsp;&nbsp;&nbsp; <a href=silcclient_unicode.html><img src=box2.gif border=0 alt=>Unicode and UTF-8 Strings in Client Library</a><br />
87 &nbsp;&nbsp;&nbsp; <a href=silcclient.html><img src=box2.gif border=0 alt=>Client Library Interface Reference</a><br />
88 &nbsp;&nbsp;&nbsp; <a href=silcclient_entry.html><img src=box2.gif border=0 alt=>Client Entry Interface Reference</a><br />
89 <a href=silcasn1lib.html><img src=box.gif border=0 alt=>SILC ASN.1 Library</a><br />
90 &nbsp;&nbsp;&nbsp; <a href=silcasn1.html><img src=box2.gif border=0 alt=>SILC ASN.1 Interface</a><br />
91 &nbsp;&nbsp;&nbsp; <a href=silcber.html><img src=box2.gif border=0 alt=>SILC BER interface</a><br />
92 <a href=silchttplib.html><img src=box.gif border=0 alt=>SILC HTTP Library</a><br />
93 &nbsp;&nbsp;&nbsp; <a href=silchttpserver.html><img src=box2.gif border=0 alt=>SILC HTTP Server Interface</a><br />
94 &nbsp;&nbsp;&nbsp; <a href=silchttpphp.html><img src=box2.gif border=0 alt=>SILC HTTP PHP Translator</a><br />
95 <a href=silcutillib.html><img src=box.gif border=0 alt=>SILC Utility Library</a><br />
96 &nbsp;&nbsp;&nbsp; <a href=silctypes.html><img src=box2.gif border=0 alt=>Basic Types and Definitions</a><br />
97 &nbsp;&nbsp;&nbsp; <a href=silcbuffer.html><img src=box2.gif border=0 alt=>Data Buffer Interface</a><br />
98 &nbsp;&nbsp;&nbsp; <a href=silcbuffmt.html><img src=box2.gif border=0 alt=>Data Buffer Format Interface</a><br />
99 &nbsp;&nbsp;&nbsp; <a href=silchashtable.html><img src=box2.gif border=0 alt=>Hash Table Interface</a><br />
100 &nbsp;&nbsp;&nbsp; <a href=silcmemory.html><img src=box2.gif border=0 alt=>Memory Allocation Interface</a><br />
101 &nbsp;&nbsp;&nbsp; <a href=silcstack.html><img src=box2.gif border=0 alt=>Data Stack (memory pool) Interface</a><br />
102 &nbsp;&nbsp;&nbsp; <a href=silcfsm.html><img src=box2.gif border=0 alt=>Finite State Machine Interface</a><br />
103 &nbsp;&nbsp;&nbsp; <a href=silcthread.html><img src=box2.gif border=0 alt=>Thread Interface</a><br />
104 &nbsp;&nbsp;&nbsp; <a href=silcmutex.html><img src=box2.gif border=0 alt=>Mutual Exclusion Lock Interface</a><br />
105 &nbsp;&nbsp;&nbsp; <a href=silccond.html><img src=box2.gif border=0 alt=>Condition Variable Interface</a><br />
106 &nbsp;&nbsp;&nbsp; <a href=silcatomic.html><img src=box2.gif border=0 alt=>Atomic Operations Interface</a><br />
107 &nbsp;&nbsp;&nbsp; <a href=silcnet.html><img src=box2.gif border=0 alt=>Network (TCP and UDP) Interface</a><br />
108 &nbsp;&nbsp;&nbsp; <a href=silcschedule.html><img src=box2.gif border=0 alt=>Scheduler Interface</a><br />
109 &nbsp;&nbsp;&nbsp; <a href=silcasync.html><img src=box2.gif border=0 alt=>Asynchronous Operation Interface</a><br />
110 &nbsp;&nbsp;&nbsp; <a href=silcstream.html><img src=box2.gif border=0 alt=>Abstract Stream Interface</a><br />
111 &nbsp;&nbsp;&nbsp; <a href=silcsocketstream.html><img src=box2.gif border=0 alt=>Socket Stream Interface</a><br />
112 &nbsp;&nbsp;&nbsp; <a href=silcfdstream.html><img src=box2.gif border=0 alt=>File Descriptor Stream Interface</a><br />
113 &nbsp;&nbsp;&nbsp; <a href=silcfileutil.html><img src=box2.gif border=0 alt=>File Utility Functions</a><br />
114 &nbsp;&nbsp;&nbsp; <a href=silcstrutil.html><img src=box2.gif border=0 alt=>String Utility Interface</a><br />
115 &nbsp;&nbsp;&nbsp; <a href=silcsnprintf.html><img src=box2.gif border=0 alt=>Snprintf Interface</a><br />
116 &nbsp;&nbsp;&nbsp; <a href=silcutf8.html><img src=box2.gif border=0 alt=>UTF-8 String Interface</a><br />
117 &nbsp;&nbsp;&nbsp; <a href=silcstringprep.html><img src=box2.gif border=0 alt=>Stringprep Interface</a><br />
118 &nbsp;&nbsp;&nbsp; <a href=silcutil.html><img src=box2.gif border=0 alt=>Utility Functions</a><br />
119 &nbsp;&nbsp;&nbsp; <a href=silclist.html><img src=box2.gif border=0 alt=>List Interface</a><br />
120 &nbsp;&nbsp;&nbsp; <a href=silcdlist.html><img src=box2.gif border=0 alt=>Dynamic List Interface</a><br />
121 &nbsp;&nbsp;&nbsp; <a href=silcmime.html><img src=box2.gif border=0 alt=>MIME Interface</a><br />
122 &nbsp;&nbsp;&nbsp; <a href=silctime.html><img src=box2.gif border=0 alt=>Time Utility Functions</a><br />
123 &nbsp;&nbsp;&nbsp; <a href=silclog.html><img src=box2.gif border=0 alt=>Logging Interface</a><br />
124 &nbsp;&nbsp;&nbsp; <a href=silcconfig.html><img src=box2.gif border=0 alt=>Config File Interface</a><br />
125 <a href=silcskrlib.html><img src=box.gif border=0 alt=>SILC Key Repository Library</a><br />
126 &nbsp;&nbsp;&nbsp; <a href=silcskr.html><img src=box2.gif border=0 alt=>SILC SKR Interface</a><br />
127 <a href=silcaputillib.html><img src=box.gif border=0 alt=>SILC Application Utility Library</a><br />
128 &nbsp;&nbsp;&nbsp; <a href=silcapputil.html><img src=box2.gif border=0 alt=>SILC Application Utilities</a><br />
129 &nbsp;&nbsp;&nbsp; <a href=silcidcache.html><img src=box2.gif border=0 alt=>SILC ID Cache Interface</a><br />
130 <a href=silcsftplib.html><img src=box.gif border=0 alt=>SILC SFTP Library</a><br />
131 &nbsp;&nbsp;&nbsp; <a href=silcsftp.html><img src=box2.gif border=0 alt=>SILC SFTP Interface</a><br />
132 &nbsp;&nbsp;&nbsp; <a href=silcsftp_fs.html><img src=box2.gif border=0 alt=>SFTP Filesystems Interface</a><br />
133
134 <br />
135 <b>Resource Links</b>
136 <br />
137 <a href="http://silcnet.org"><img src="box.gif" border="0" alt="">SILC Project Website</a><br />
138 <a href="http://silcnet.org/support/documentation/"><img src="box.gif" border="0" alt="">SILC Protocol Documentation</a><br />
139 <a href="http://silcnet.org/support/documentation/wp/"><img src="box.gif" border="0" alt="">SILC White Paper</a><br />
140 <a href="http://silcnet.org/support/faq/"><img src="box.gif" border="0" alt="">SILC FAQs</a><br />
141
142 </small>
143 <br /><br /><br /><br />
144     </td></tr>
145    </table>
146   </td>
147
148   <td bgcolor="#cccccc" background="dot.gif">
149    <img src="space.gif" width="1" height="1" border="0" alt=""></td>
150
151   <td width="720" bgcolor="#ffffff">
152    <img src="space.gif" width="1" height="1" border="0" alt="">
153    <table cellpadding="2" cellspacing="6" width="100%">
154     <tr><td valign="top">
155 <br />
156 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
157 <HTML><HEAD>
158 <TITLE>silcschedule.html</TITLE>
159 <!-- Source: silcschedule.h -->
160 <!-- Generated with ROBODoc Version 3.2.3 (May  5 2014) -->
161 <!-- ROBODoc (c) 1994-2001 by Frans Slothouber and Jacco van Weert. -->
162 </HEAD><BODY BGCOLOR="#FFFFFF">
163 <BR>
164
165 <FONT SIZE="+2" COLOR="#000055"><B><A NAME="SILC Schedule Interface">SILC Schedule Interface</A></FONT></B><BR><SMALL>Header: silcschedule.h</SMALL><BR><BR>
166
167 <FONT SIZE="+1"><B>
168 <FONT COLOR="#000055">DESCRIPTION
169 </FONT></B></FONT>
170 <PRE><FONT FACE="Helvetiva,Arial,Sans-serif">
171  The SILC Scheduler is the heart of any application. The scheduler provides
172  the application's main loop that can handle incoming data, outgoing data,
173  timeouts and dispatch different kind of tasks.
174
175  The SILC Scheduler supports file descriptor based tasks and timeout tasks.
176  File descriptor tasks are tasks that perform some operation over the
177  specified file descriptor. These include network connections, for example.
178  The timeout tasks are timeouts that are executed after the specified
179  timeout has elapsed.
180
181  The SILC Scheduler is designed to be the sole main loop of the application
182  so that the application does not need any other main loop.  However,
183  SILC Scheduler does support running the scheduler only once, so that the
184  scheduler does not block, and thus providing a possiblity that some
185  external main loop is run over the SILC Scheduler.
186
187  Typical application first initializes the scheduler and then registers
188  the very first tasks to the scheduler and then run the scheduler.  After
189  the scheduler's run function returns the application is considered to be
190  ended.
191
192  On WIN32 systems the SILC Scheduler is too designed to work as the main
193  loop of the GUI application. It can handle all Windows messages and
194  it dispatches them from the scheduler, and thus makes it possible to
195  create GUI applications. The scheduler can also handle all kinds of
196  WIN32 handles, this includes sockets created by the SILC Net API routines,
197  WSAEVENT handle objects created by Winsock2 routines and arbitrary
198  WIN32 HANDLE objects.
199
200  The SILC Scheduler supports multi-threads as well. The actual scheduler
201  must be run in single-thread but other threads may register new tasks
202  and unregister old tasks.  However, it is enforced that the actual
203  task is always run in the main thread.  The scheduler is context based
204  which makes it possible to allocate several schedulers for one application.
205  Since the scheduler must be run in single-thread, a multi-threaded
206  application could be created by allocating own scheduler for each of the
207  worker threads.
208
209 </FONT></PRE><LI><A HREF="silcschedule-SilcSchedule.html">SilcSchedule</A>
210 <LI><A HREF="silcschedule-SilcTask.html">SilcTask</A>
211 <LI><A HREF="silcschedule-SilcTaskEvent.html">SilcTaskEvent</A>
212 <LI><A HREF="silcschedule-SilcTaskCallback.html">SilcTaskCallback</A>
213 <LI><A HREF="silcschedule-SilcTaskNotifyCb.html">SilcTaskNotifyCb</A>
214 <LI><A HREF="silcschedule-SILC_ALL_TASKS.html">SILC_ALL_TASKS</A>
215 <LI><A HREF="silcschedule-SILC_TASK_CALLBACK.html">SILC_TASK_CALLBACK</A>
216 <LI><A HREF="silcschedule-silc_schedule_init.html">silc_schedule_init</A>
217 <LI><A HREF="silcschedule-silc_schedule_uninit.html">silc_schedule_uninit</A>
218 <LI><A HREF="silcschedule-silc_schedule_stop.html">silc_schedule_stop</A>
219 <LI><A HREF="silcschedule-silc_schedule.html">silc_schedule</A>
220 <LI><A HREF="silcschedule-silc_schedule_one.html">silc_schedule_one</A>
221 <LI><A HREF="silcschedule-silc_schedule_wakeup.html">silc_schedule_wakeup</A>
222 <LI><A HREF="silcschedule-silc_schedule_get_context.html">silc_schedule_get_context</A>
223 <LI><A HREF="silcschedule-silc_schedule_set_notify.html">silc_schedule_set_notify</A>
224 <LI><A HREF="silcschedule-silc_schedule_task_add_fd.html">silc_schedule_task_add_fd</A>
225 <LI><A HREF="silcschedule-silc_schedule_task_add_timeout.html">silc_schedule_task_add_timeout</A>
226 <LI><A HREF="silcschedule-silc_schedule_task_add_signal.html">silc_schedule_task_add_signal</A>
227 <LI><A HREF="silcschedule-silc_schedule_task_del.html">silc_schedule_task_del</A>
228 <LI><A HREF="silcschedule-silc_schedule_task_del_by_fd.html">silc_schedule_task_del_by_fd</A>
229 <LI><A HREF="silcschedule-silc_schedule_task_del_by_callback.html">silc_schedule_task_del_by_callback</A>
230 <LI><A HREF="silcschedule-silc_schedule_task_del_by_context.html">silc_schedule_task_del_by_context</A>
231 <LI><A HREF="silcschedule-silc_schedule_task_del_by_all.html">silc_schedule_task_del_by_all</A>
232 <LI><A HREF="silcschedule-silc_schedule_set_listen_fd.html">silc_schedule_set_listen_fd</A>
233 <LI><A HREF="silcschedule-silc_schedule_get_fd_events.html">silc_schedule_get_fd_events</A>
234 <LI><A HREF="silcschedule-silc_schedule_unset_listen_fd.html">silc_schedule_unset_listen_fd</A>
235 </BODY></HTML>
236 <br /><br /><br /><br />
237     </td></tr>
238    </table>
239   </td>
240
241   <td bgcolor="#cccccc" background="dot.gif">
242    <img src="space.gif" width="1" height="1" border="0" alt=""></td>
243
244   <td width="180" bgcolor="#f0f0f0">
245     <img src="space.gif" width="1" height="1" border="0" alt="">
246     <table width="100%" cellpadding="4" cellspacing="0">
247     <tr valign="top"><td>
248 <br />
249 <font face="Helvetica,Arial,Sans-serif" size="1">
250 </font>
251
252 <br /><br /><br /><br />
253     </td></tr>
254     </table>
255   </td>
256 </tr>
257 </table>
258
259 <table border="0" cellspacing="0" cellpadding="0" width="100%">
260 <tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
261 </table>
262 <table border="0" cellspacing="0" cellpadding="6" width="100%">
263  <tr valign="top" bgcolor="#dddddd">
264   <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
265     <a href="http://silcnet.org">SILC Project Website</a></small></td>
266   <td align="right"><small>
267    <a href="index.html">SILC Toolkit Reference Manual</a><br />
268    <a href="toolkit_index.html">Index</a></small></td>
269    </small></td>
270  </tr>
271 </table>
272
273 </body>
274 </html>