Comment changes.
[silc.git] / TODO
diff --git a/TODO b/TODO
index 31f8c01ad9fed1d0aef0042d33b8f931a3147b3d..569d4dd8232edb4f9502f29b375c49de5dece085 100644 (file)
--- a/TODO
+++ b/TODO
@@ -93,65 +93,38 @@ lib/silcclient, The Client Library
 Runtime library, lib/silcutil/
 ==============================
 
 Runtime library, lib/silcutil/
 ==============================
 
+ o silc_malloc et. al. to respect --with-alignment.
+
  o Fix universal time decoding (doesn't accept all formats) in silctime.c.
 
  o Fix universal time decoding (doesn't accept all formats) in silctime.c.
 
+ o Add directory opening/traversing functions
+
+ o regex from /lib/contrib to lib/silcutil, define SILC Regex API. (***DONE)
+
+ o Additional scheduler changes: optimize silc_schedule_wakeup.  Wakeup
+   only if the scheduler is actually waiting something.  If it is
+   delivering tasks wakeup is not needed.
+
+ o silc_stringprep to non-allocating version.
+
+ o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least.
+   SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled
+   in separately.
+
  o Add functions to manipulate environment variables. (***DONE)
 
  o Add functions to loading shared/dynamic object symbols (replaces the
    SIM library (lib/silcsim) and introduces generic library).  Add this
    to lib/silcutil/silcdll.[ch].  (***TESTING NEEDED WIN32, TODO Symbian)
 
  o Add functions to manipulate environment variables. (***DONE)
 
  o Add functions to loading shared/dynamic object symbols (replaces the
    SIM library (lib/silcsim) and introduces generic library).  Add this
    to lib/silcutil/silcdll.[ch].  (***TESTING NEEDED WIN32, TODO Symbian)
 
- o Add directory opening/traversing functions
-
  o silc_getopt routines (***DONE)
 
  o silc_getopt routines (***DONE)
 
- o regex from /lib/contrib to lib/silcutil.
-
  o The SILC Event signals.  Asynchronous events that can be created,
    connected to and signalled.  Either own event routines or glued into
  o The SILC Event signals.  Asynchronous events that can be created,
    connected to and signalled.  Either own event routines or glued into
-   SilcSchedule:
-
-   SilcTask silc_schedule_task_add_event(SilcSchedule schedule,
-                                        const char *event, ...);
-   SilcBool silc_schedule_event_connect(SilcSchedule schedule,
-                                       const char *event,
-                                       SilcTaskCallback event_callback,
-                                       void *context);
-   SilcBool silc_schedule_event_signal(SilcSchedule schedule,
-                                      const char *event, ...);
-
-   Example:
-     silc_schedule_task_add_event(schedule, "connected",
-                                  SILC_PARAM_UI32_INT,
-                                  SILC_PARAM_BUFFER,
-                                  SILC_PARAM_END);
-     silc_schedule_event_connect(schedule, "connected", connected_cb, ctx);
-     silc_schedule_event_signal(schedule, "connected", integer, buf,
-                                 SILC_PARAM_END);
-     SILC_TASK_CALLBACK(connected_cb)
-     {
-       FooCtx ctx = context;
-       va_list args;
-       SilcUInt32 integer;
-       SilcBuffer buf;
-
-       va_start(args, context);
-       integer = va_arg(args, SilcUInt32);
-       buf = va_arg(args, SilcBuffer);
-       va_end(args);
-       ...
-     }
-
-   Problems: Events would be SilcSchedule specific, and would not work on
-   multi-thread/multi-scheduler system.  The events should be copyable
-   between schedulers.  Another problem is the signal delivery.  Do we
-   deliver them synchronously possibly from any thread to any other thread
-   or do we deliver them through the target schedulers.  If we use the
-   schedulers then signalling would be asynchronous (data must be
-   duplicated and later freed) which is not very nice.
+   SilcSchedule. (***DONE)
 
  o If the event signals are added, the SILC_PARAM_* stuff needs to be
 
  o If the event signals are added, the SILC_PARAM_* stuff needs to be
-   moved from silcbuffmt.h to silctypes.h or something similar.
+   moved from silcbuffmt.h to silctypes.h or something similar. (***DONE)
 
  o In case the SILC Events are done we shall create a new concept of
    parent and child SilcSchedule's.  When new SilcSchedule is created a
 
  o In case the SILC Events are done we shall create a new concept of
    parent and child SilcSchedule's.  When new SilcSchedule is created a
@@ -164,28 +137,12 @@ Runtime library, lib/silcutil/
    would be linked and could be accessed from any of the schedulers.
    It should be possible to retrieve the parent and enumerate all children
    from any of the schedulers.
    would be linked and could be accessed from any of the schedulers.
    It should be possible to retrieve the parent and enumerate all children
    from any of the schedulers.
-
-   SilcSchedule silc_schedule_init(int max_tasks, void *app_context,
-                                  SilcSchedule parent);
-   SilcSchedule silc_schedule_get_parent(SilcSchedule schedule);
-
- o Additional scheduler changes: optimize silc_schedule_wakeup.  Wakeup
-   only if the scheduler is actually waiting something.  If it is
-   delivering tasks wakeup is not needed.
-
- o Structured log messages to Log API.  Allows machine readable log
-   messages.  Would allow sending of any kind of data in a log message.
+   (***DONE)
 
  o Base64 to an own API (***DONE)
 
  o Timer API (***DONE)
 
 
  o Base64 to an own API (***DONE)
 
  o Timer API (***DONE)
 
- o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least.
-   SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled
-   in separately.
-
- o silc_stringprep to non-allocating version.
-
  o silc_hash_table_replace -> silc_hash_table_set.  Retain support for
    silc_hash_table_replace as macro. (***DONE)
 
  o silc_hash_table_replace -> silc_hash_table_set.  Retain support for
    silc_hash_table_replace as macro. (***DONE)
 
@@ -207,27 +164,7 @@ Runtime library, lib/silcutil/
  o silc_stack_alloc shouldn't require multiple by 8 size argument, it
    should figure it out itself. (***DONE)
 
  o silc_stack_alloc shouldn't require multiple by 8 size argument, it
    should figure it out itself. (***DONE)
 
- o silc_malloc et. al. to respect --with-alignment.
-
- o Add '%@' format to silc_snprintf functions.  It marks for external
-   rendering function of following type:
-
-     /* Snprintf rendering function.  The `data' is rendered into a string
-        and allocated string is returned.  If NULL is returned the
-        rendering is skipped and ignored.  If the returned string does
-       not fit to the destination buffer it may be truncated. */
-     typedef char *(*SilcSnprintfRender)(void *data);
-
-   It can work like following:
-
-   char *id_renderer(void *data)
-   {
-     char tmp[32];
-     id_to_str(tmp, sizeof(tmp), (SilcID *)data);
-     return strdup(tmp);
-   }
-
-   silc_snprintf(buf, sizeof(buf), "Client ID %@", id_renderer, client_id);
+ o Add '%@' format to silc_snprintf functions.
    (***DONE)
 
  o SILC Tls (Thread-local storage) API to lib/silcutil/silcthread.[ch].
    (***DONE)
 
  o SILC Tls (Thread-local storage) API to lib/silcutil/silcthread.[ch].
@@ -239,6 +176,9 @@ Runtime library, lib/silcutil/
  o Generic SilcResult that includes all possible status and
    error conditions and generic errno API. (***DONE)
 
  o Generic SilcResult that includes all possible status and
    error conditions and generic errno API. (***DONE)
 
+ (o Structured log messages to Log API.  Allows machine readable log
+   messages.  Would allow sending of any kind of data in a log message.) maybe
+
  (o Change some stream routines (like socket stream API) to accept ANY
    stream and use silc_stream_get_root to get the socket stream from the
    given stream.  This will make various stream APIs more easier to use
  (o Change some stream routines (like socket stream API) to accept ANY
    stream and use silc_stream_get_root to get the socket stream from the
    given stream.  This will make various stream APIs more easier to use
@@ -347,6 +287,10 @@ Crypto Library, lib/silccrypt/
    All PKCS routines should now take callbacks as argument and they should
    be delivered to SilcPKCSObject and SilcPKCSAlgorithm too. (***DONE)
 
    All PKCS routines should now take callbacks as argument and they should
    be delivered to SilcPKCSObject and SilcPKCSAlgorithm too. (***DONE)
 
+ o The asynchronous functions to perhaps to _async to preserve backwards
+   compatibility with synchronous versions, and make easier to migrate
+   from 1.1 to 1.2.
+
  o Change PKCS Algorithm API to take SilcPKCSAlgorithm as argument to
    encrypt, decrypt, sign and verify functions.  We may need to for exmaple
    check the alg->hash, supported hash functions.  Maybe deliver it also
  o Change PKCS Algorithm API to take SilcPKCSAlgorithm as argument to
    encrypt, decrypt, sign and verify functions.  We may need to for exmaple
    check the alg->hash, supported hash functions.  Maybe deliver it also