updates.
[silc.git] / lib / silcclient / silcapi.h
index 175af9bca4bcbeea53e56a4f803a485249af37cc..cb48fd93d419037555bb0cbfc2c88aafa0299b4a 100644 (file)
@@ -74,6 +74,7 @@ typedef enum {
   SILC_KEY_AGREEMENT_ERROR,           /* Unknown error occurred */
   SILC_KEY_AGREEMENT_FAILURE,         /* The protocol failed */
   SILC_KEY_AGREEMENT_TIMEOUT,         /* The protocol timeout */
+  SILC_KEY_AGREEMENT_ABORTED,         /* The protocol aborted */
 } SilcKeyAgreementStatus;
 /***/
 
@@ -533,6 +534,25 @@ int silc_client_init(SilcClient client);
  ***/
 void silc_client_run(SilcClient client);
 
+/****f* silcclient/SilcClientAPI/silc_client_run_one
+ *
+ * SYNOPSIS
+ *
+ *    void silc_client_run_one(SilcClient client);
+ *
+ * DESCRIPTION
+ *
+ *    Runs the client and returns immeadiately. This function is used when
+ *    the SILC Client object indicated by the `client' is run under some
+ *    other scheduler, or event loop or main loop.  On GUI applications,
+ *    for example this may be desired to used to run the client under the
+ *    GUI application's main loop.  Typically the GUI application would
+ *    register an idle task that calls this function multiple times in
+ *    a second to quickly process the SILC specific data.
+ *
+ ***/
+void silc_client_run_one(SilcClient client);
+
 /****f* silcclient/SilcClientAPI/silc_client_stop
  *
  * SYNOPSIS
@@ -1586,7 +1606,8 @@ void silc_client_free_channel_private_keys(SilcChannelPrivateKey *keys,
 void silc_client_send_key_agreement(SilcClient client,
                                    SilcClientConnection conn,
                                    SilcClientEntry client_entry,
-                                   char *hostname,
+                                   const char *hostname,
+                                   const char *bindhost,
                                    int port,
                                    uint32 timeout_secs,
                                    SilcKeyAgreementCallback completion,
@@ -1682,7 +1703,8 @@ void silc_client_perform_key_agreement_fd(SilcClient client,
  *    before the key agreement protocol has been performed. After it has
  *    been performed the library will automatically unbind the port. The 
  *    `client_entry' is the client to which we sent the key agreement 
- *    request. 
+ *    request.  The key agreement completion callback will be called
+ *    with SILC_KEY_AGREEMENT_ABORTED status.
  *
  ***/
 void silc_client_abort_key_agreement(SilcClient client,
@@ -1766,16 +1788,44 @@ silc_client_request_authentication_method(SilcClient client,
                                          SilcConnectionAuthRequest callback,
                                          void *context);
 
+/****d* silcclient/SilcClientAPI/SilcClientMonitorStatus
+ *
+ * NAME
+ *
+ *    typedef enum { ... } SilcClientMonitorStatus;
+ *
+ * DESCRIPTION
+ *
+ *    File transmission session status types.  These will indicate
+ *    the status of the file transmission session.
+ *
+ * SOURCE
+ */
 typedef enum {
-  SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT,
-  SILC_CLIENT_FILE_MONITOR_SEND,
-  SILC_CLIENT_FILE_MONITOR_RECEIVE,
+  SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT,    /* In key agreemenet phase */
+  SILC_CLIENT_FILE_MONITOR_SEND,            /* Sending file */
+  SILC_CLIENT_FILE_MONITOR_RECEIVE,         /* Receiving file */
   SILC_CLIENT_FILE_MONITOR_GET,
   SILC_CLIENT_FILE_MONITOR_PUT,
-  SILC_CLIENT_FILE_MONITOR_CLOSED,
-  SILC_CLIENT_FILE_MONITOR_ERROR,
+  SILC_CLIENT_FILE_MONITOR_CLOSED,          /* Session closed */
+  SILC_CLIENT_FILE_MONITOR_ERROR,           /* Error during session */
 } SilcClientMonitorStatus;
+/***/
 
+/****d* silcclient/SilcClientAPI/SilcClientFileError
+ *
+ * NAME
+ *
+ *    typedef enum { ... } SilcClientFileError;
+ *
+ * DESCRIPTION
+ *
+ *    File transmission error types.  These types are returned by
+ *    some of the file transmission functions, and by the monitor
+ *    callback to indicate error.
+ *
+ * SOURCE
+ */
 typedef enum {
   SILC_CLIENT_FILE_OK,
   SILC_CLIENT_FILE_ERROR,
@@ -1784,8 +1834,9 @@ typedef enum {
   SILC_CLIENT_FILE_NO_SUCH_FILE,
   SILC_CLIENT_FILE_PERMISSION_DENIED,
 } SilcClientFileError;
+/***/
 
-/****f* silcclient/SilcClientAPI/silc_client_file_receive
+/****f* silcclient/SilcClientAPI/SilcClientFileMonitor
  *
  * SYNOPSIS
  *
@@ -1804,10 +1855,12 @@ typedef enum {
  *
  *    Monitor callback that is called during the file transmission to
  *    monitor the transmission process.  The `status' indicates the current
- *    monitoring process.  The `offset' is the currently transmitted amount
- *    of total `filesize'.  The `client_entry' indicates the remote client,
- *    and the transmission session ID is the `session_id'.  The filename
- *    being transmitted is indicated by the `filepath'.
+ *    monitoring process.  The `error' will indicate the error type
+ *    if `status' is SILC_CLIENT_FILE_MONITOR_ERROR.  The `offset' is the
+ *    currently transmitted amount of total `filesize'.  The `client_entry'
+ *    indicates the remote client, and the transmission session ID is the 
+ *    `session_id'.  The filename being transmitted is indicated by the 
+ *    `filepath'.
  *
  ***/
 typedef void (*SilcClientFileMonitor)(SilcClient client,
@@ -1825,12 +1878,14 @@ typedef void (*SilcClientFileMonitor)(SilcClient client,
  *
  * SYNOPSIS
  *
- *    void silc_client_file_send(SilcClient client,
- *                               SilcClientConnection conn,
- *                               SilcClientFileMonitor monitor,
- *                               void *monitor_context,
- *                               SilcClientEntry client_entry,
- *                               const char *filepath);
+ *    uint32 silc_client_file_send(SilcClient client,
+ *                                 SilcClientConnection conn,
+ *                                 SilcClientFileMonitor monitor,
+ *                                 void *monitor_context,
+ *                                 const char *local_ip,
+ *                                 uint32 local_port,
+ *                                 SilcClientEntry client_entry,
+ *                                 const char *filepath);
  *
  * DESCRIPTION
  *