updates.
[silc.git] / lib / silccore / silcprotocol.h
diff --git a/lib/silccore/silcprotocol.h b/lib/silccore/silcprotocol.h
deleted file mode 100644 (file)
index a6e4463..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
-
-  silcprotocol.h
-  Author: Pekka Riikonen <priikone@silcnet.org>
-  Copyright (C) 1997 - 2000 Pekka Riikonen
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-*/
-
-/****h* silccore/silcprotocol.h
- *
- * DESCRIPTION
- *
- * Implementation of the protocol handling routines for SILC applications.
- * These routines allow execution of arbitrary protocols in the application.
- * New protocols may be registered by type and allocated later by that
- * type for the execution. The protocols implements a state machine style
- * execution where each state is executed one after the other. The
- * application controls these states and their order of execution.
- * 
- * After the protocol has been executed, an final callback is called
- * which the application may use to do post-protocol work or to start
- * perhaps other protocols. These routines are generic and the actual
- * protocols, their types, callback and final callbacks functions must
- * be implemented in the application.
- *
- ***/
-
-#ifndef SILCPROTOCOL_H
-#define SILCPROTOCOL_H
-
-/****d* silccore/SilcProtocolAPI/SilcProtocolType
- *
- * NAME
- * 
- *    typedef unsigned char SilcProtocolType;
- *
- * DESCRIPTION
- *
- *    Protocol type definition. The protocol types are application
- *    specific and this is just a generic type for them.
- *
- ***/
-typedef unsigned char SilcProtocolType;
-
-/****d* silccore/SilcProtocolAPI/SilcProtocolState
- *
- * NAME
- * 
- *    typedef unsigned char SilcProtocolState;
- *
- * DESCRIPTION
- *
- *    Protocol state definition and the defined protocol states. These
- *    states are the generic states. However, each protocol actually
- *    implements the states. The state after SILC_PROTOCOL_STATE_START
- *    would be state 2 in the application. These states can be easily
- *    used for example inside switch() statement.
- *
- * EXAMPLE
- *
- *    switch (protocol->state) {
- *    case SILC_PROTOCOL_STATE_START:
- *      protocol_starts_here();
- *    case 2:
- *      ...
- *    case 3:
- *      ...
- *    case SILC_PROTOCOL_STATE_END:
- *      protocol_ends_here();
- *    case SILC_PROTOCOL_STATE_FAILURE:
- *      remote_end_sent_failure();
- *    case SILC_PROTOCOL_STATE_ERROR:
- *      local_error_during_protocol();
- *    }
- *
- * SOURCE
- */
-typedef unsigned char SilcProtocolState;
-
-/* Protocol states. Do NOT change the values of these states, especially
-   the START state or you break every protocol. */
-#define SILC_PROTOCOL_STATE_UNKNOWN 0
-#define SILC_PROTOCOL_STATE_START 1
-#define SILC_PROTOCOL_STATE_END 252
-#define SILC_PROTOCOL_STATE_FAILURE 253         /* Received failure from remote */
-#define SILC_PROTOCOL_STATE_ERROR 254    /* Local error at our end */
-/***/
-
-/* Type definition for authentication protocol's auth methods. */
-/* XXX strictly speaking this belongs to application */
-typedef unsigned char SilcProtocolAuthMeth;
-
-/****f* silccore/SilcProtocolAPI/SilcProtocolCallback
- *
- * SYNOPSIS
- *
- *    typedef SilcTaskCallback SilcProtocolCallback;
- *
- * DESCRIPTION
- *
- *    Protocol callback. This callback is set when registering new
- *    protocol. The callback is called everytime the protocol is executed.
- *    The `context' delivered to this callback function is the SilcProtocol
- *    context and needs to be explicitly type casted to SilcProtocol in
- *    the callback function.
- *
- ***/
-typedef SilcTaskCallback SilcProtocolCallback;
-
-/****f* silccore/SilcProtocolAPI/SilcProtocolFinalCallback
- *
- * SYNOPSIS
- *
- *    typedef SilcTaskCallback SilcProtocolFinalCallback;
- *
- * DESCRIPTION
- *
- *    Final protocol callback. This callback is set when allocating
- *    protocol for execution. This is called when the protocol has ended.
- *    The `context' delivered to this callback function is the SilcProtocol
- *    context and needs to be explicitly type casted to SilcProtocol in
- *    the callback function.
- *
- ***/
-typedef SilcTaskCallback SilcProtocolFinalCallback;
-
-/****s* silccore/SilcProtocolAPI/SilcProtocolObject
- *
- * NAME
- * 
- *    typedef struct SilcProtocolObjectStruct { ... } SilcProtocolObject;
- *
- * DESCRIPTION
- *
- *    The object for one protocol. This hold the information of one
- *    registered protocol. Application must not allocate this type
- *    directly. It is used by the protocol routines.
- *
- *    Short description of the field following:
- *  
- *    SilcProtocolType type
- *
- *      Protocol type.
- * 
- *    SilcProtocolCallback callback;
- *
- *      Callback function for the protocol. This is SilcTaskCallback function
- *      pointer as the protocols in SILC are executed as timeout tasks.
- *
- *    struct SilcProtocolObjectStruct *next;
- *
- *      Pointer to the next protocol.
- *
- ***/
-typedef struct SilcProtocolObjectStruct {
-  SilcProtocolType type;
-  SilcProtocolCallback callback;
-  struct SilcProtocolObjectStruct *next;
-} SilcProtocolObject;
-
-/****s* silccore/SilcProtocolAPI/SilcProtocol
- *
- * NAME
- * 
- *    typedef struct SilcProtocolStruct { ... } *SilcProtocol;
- *
- * DESCRIPTION
- *
- *    The actual protocol object. This is allocated by the silc_protocol_alloc
- *    and holds the information about the current protocol. Information
- *    such as the current state, execution callback and final callback.
- *    The context is freed by silc_protocol_free function.
- *
- *    Short description of the field following:
- *
- *    SilcProtocolObject *protocol
- *
- *      This is the pointer to the SilcProtocolObject and holds the
- *      protocol specific information.
- *
- *    SilcProtocolState state
- *
- *      Protocol state. The state of the protocol can be changed in the
- *      callback function.
- *
- *    void *context
- *
- *      Context to be sent for the callback function. This is usually 
- *      object for either SILC client or server. However, this abstraction 
- *      makes it possible that this pointer could be some other object as
- *      well. Note that the context is not delivered in any callback 
- *      function. Application can access it through this context.
- *
- *    SilcProtocolFinalCallback final_callback;
- *
- *      This is a callback function that is called with timeout _after_ the
- *      protocol has finished or error occurs. If this is NULL, naturally 
- *      nothing will be executed. Protocol should call this function only at 
- *      SILC_PROTOCOL_STATE_END and SILC_PROTOCOL_STATE_ERROR states.
- *
- ***/
-typedef struct SilcProtocolStruct {
-  SilcProtocolObject *protocol;
-  SilcProtocolState state;
-  void *context;
-  SilcProtocolFinalCallback final_callback;
-} *SilcProtocol;
-
-/* Prototypes */
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_register
- *
- * SYNOPSIS
- *
- *    void silc_protocol_register(SilcProtocolType type,
- *                                SilcProtocolCallback callback);
- *
- * DESCRIPTION
- *
- *    Dynamically registers new protocol. The protocol is added into protocol
- *    list and can be unregistered with silc_protocol_unregister. The
- *    `type' is the type of the protocol and is used to identify the
- *    protocol when allocating it with silc_protocol_alloc. The `callback'
- *    is the actual protocol function that is called when protocol is
- *    executed (and it performes the actual protocol). The protocol
- *    is unregistered by silc_protocol_unregister function.
- *
- ***/
-void silc_protocol_register(SilcProtocolType type,
-                           SilcProtocolCallback callback);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_unregister
- *
- * SYNOPSIS
- *
- *    void silc_protocol_unregister(SilcProtocolType type,
- *                                  SilcProtocolCallback callback);
- *
- * DESCRIPTION
- *
- *    Unregisters protocol. The unregistering is done by both protocol type
- *    and the protocol callback. Every registered protocol must be 
- *    unregistered using this function.
- *
- ***/
-void silc_protocol_unregister(SilcProtocolType type,
-                              SilcProtocolCallback callback);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_alloc
- *
- * SYNOPSIS
- *
- *    void silc_protocol_alloc(SilcProtocolType type, 
- *                             SilcProtocol *new_protocol,
- *                             void *context, 
- *                             SilcProtocolFinalCallback callback);
- *
- * DESCRIPTION
- *
- *    Allocates a new protocol. The new allocated and initialized 
- *    protocol is returned to the `new_protocol' argument. The argument
- *    context `context' is the context to be sent as argument for the
- *    protocol callback function. The `callback' argument is the function
- *    to be called after the protocol has finished.
- *
- ***/
-void silc_protocol_alloc(SilcProtocolType type, SilcProtocol *new_protocol,
-                        void *context, SilcProtocolFinalCallback callback);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_free
- *
- * SYNOPSIS
- *
- *    void silc_protocol_free(SilcProtocol protocol);
- *
- * DESCRIPTION
- *
- *    Frees the protocol context. This must be called for all allocated
- *    protocols.
- *
- ***/
-void silc_protocol_free(SilcProtocol protocol);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_execute
- *
- * SYNOPSIS
- *
- *    void silc_protocol_execute(SilcProtocol protocol, SilcSchedule schedule,
- *                               long secs, long usecs);
- *
- * DESCRIPTION
- *
- *    Executes the protocol. This calls the state that has been set.
- *    The state must be set before calling this function. This is then
- *    also used to call always the next state after changing the state
- *    of the protocol. The `schedule' is the application's scheduler.
- *    It is passed to the protocol callback functions. The `secs' and 
- *    `usecs' are the timeout before the protocol is executed. If both 
- *    zero the protocol is executed immediately.
- *
- ***/
-void silc_protocol_execute(SilcProtocol protocol, SilcSchedule schedule,
-                          long secs, long usecs);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_execute_final
- *
- * SYNOPSIS
- *
- *    void 
- *    silc_protocol_execute_final(SilcProtocol protocol, 
- *                               SilcSchedule schedule);
- *
- * DESCRIPTION
- *
- *    Executes the final callback for the protocol. The `schedule' is
- *    the application's scheduler.. It is passed to the protocol callback
- *    functions. The final callback is executed immediately.
- *
- ***/
-void silc_protocol_execute_final(SilcProtocol protocol, SilcSchedule schedule);
-
-/****f* silccore/SilcProtocolAPI/silc_protocol_cancel
- *
- * SYNOPSIS
- *
- *    void silc_protocol_cancel(SilcProtocol protocol, SilcSchedule schedule);
- *
- * DESCRIPTION
- *
- *    Cancels the execution of the next state of the protocol. This has
- *    effect only if the silc_protocol_execute was called with timeout.
- *    It is guaranteed that if the protocol is cancelled before the timeout
- *    has elapsed the protocol callback won't be called.
- *
- ***/
-void silc_protocol_cancel(SilcProtocol protocol, SilcSchedule schedule);
-
-#endif