f6f42cdcfb81526c7c9f1a327dcc2698dffb1848
[silc.git] / lib / silcutil / symbian / silcsymbianscheduler.cpp
1 /*\r
2 \r
3   silcsymbianschduler.cpp\r
4 \r
5   Author: Pekka Riikonen <priikone@silcnet.org>\r
6 \r
7   Copyright (C) 1998 - 2007 Pekka Riikonen\r
8 \r
9   This program is free software; you can redistribute it and/or modify\r
10   it under the terms of the GNU General Public License as published by\r
11   the Free Software Foundation; version 2 of the License.\r
12 \r
13   This program is distributed in the hope that it will be useful,\r
14   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16   GNU General Public License for more details.\r
17 \r
18 */\r
19 \r
20 /* On symbian the SILC Scheduler doesn't do anything.  All timeout tasks\r
21    are dispatched by the generic scheduler implementation.  Sockets and\r
22    file descriptors are dispatched automatically in their class\r
23    implementation, so adding FD Tasks on Symbian doesn't do anything.\r
24 \r
25    This also means that on Symbian the SILC Scheduler always returns\r
26    immediately.  Because FD tasks use the Symbian scheduler the performance\r
27    is as good as it can be.  For timeout tasks the performance is not an\r
28    issue. */\r
29 \r
30 #include "silc.h"\r
31 \r
32 extern "C" {\r
33 \r
34 int silc_poll(SilcSchedule schedule, void *context)\r
35 {\r
36   /* Return immediately, timeout. */\r
37   return 0;\r
38 }\r
39 \r
40 SilcBool silc_schedule_internal_schedule_fd(SilcSchedule schedule,\r
41                                             void *context,\r
42                                             SilcTaskFd task,\r
43                                             SilcTaskEvent event_mask)\r
44 {\r
45   /* Nothing to do */\r
46   return TRUE;\r
47 }\r
48 \r
49 void *silc_schedule_internal_init(SilcSchedule schedule,\r
50                                   void *app_context)\r
51 {\r
52   /* Nothing to do */\r
53   return (void *)1;\r
54 }\r
55 \r
56 \r
57 void silc_schedule_internal_uninit(SilcSchedule schedule, void *context)\r
58 {\r
59   /* Nothing to do */\r
60 }\r
61 \r
62 void silc_schedule_internal_wakeup(SilcSchedule schedule, void *context)\r
63 {\r
64   /* Nothing to do */\r
65 }\r
66 \r
67 void silc_schedule_internal_signal_register(SilcSchedule schedule,\r
68                                             void *context,\r
69                                             SilcUInt32 sig,\r
70                                             SilcTaskCallback callback,\r
71                                             void *callback_context)\r
72 {\r
73   /* Nothing to do */\r
74 }\r
75 \r
76 void silc_schedule_internal_signal_unregister(SilcSchedule schedule,\r
77                                               void *context,\r
78                                               SilcUInt32 sig)\r
79 {\r
80   /* Nothing to do */\r
81 }\r
82 \r
83 void silc_schedule_internal_signals_call(SilcSchedule schedule, void *context)\r
84 {\r
85   /* Nothing to do */\r
86 }\r
87 \r
88 void silc_schedule_internal_signals_block(SilcSchedule schedule, void *context)\r
89 {\r
90   /* Nothing to do */\r
91 }\r
92 \r
93 void silc_schedule_internal_signals_unblock(SilcSchedule schedule,\r
94                                             void *context)\r
95 {\r
96   /* Nothing to do */\r
97 }\r
98 \r
99 EXPORT_C const SilcScheduleOps schedule_ops =\r
100 {\r
101   silc_schedule_internal_init,\r
102   silc_schedule_internal_uninit,\r
103   silc_poll,\r
104   silc_schedule_internal_schedule_fd,\r
105   silc_schedule_internal_wakeup,\r
106   silc_schedule_internal_signal_register,\r
107   silc_schedule_internal_signal_unregister,\r
108   silc_schedule_internal_signals_call,\r
109   silc_schedule_internal_signals_block,\r
110   silc_schedule_internal_signals_unblock,\r
111 };\r
112 \r
113 } /* extern "C" */