Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Protocol Interface SILC Public Key Payload Interface SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC Key Repository Library SILC SKR Interface SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC VCard Library SILC VCard Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC Math Library SILC MP Interface SILC Math Interface Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Function silc_fsm_thread_alloc SYNOPSIS
        SilcFSMThread silc_fsm_thread_alloc(SilcFSM fsm,
                                            void *thread_context,
                                            SilcFSMThreadDestructor destructor,
                                            void *destructor_context,
                                            SilcBool real_thread);
DESCRIPTION
        Allocates FSM thread context.  The thread will be executed in the
        FSM machine indicated by `fsm'.  The caller must free the returned
        thread context with silc_fsm_free.  If the 'real_thread' is TRUE
        then the thread will actually be executed in real thread, if platform
        supports them.  The `thread_context' is delivered to every state
        function in the thread.
NOTES
        If the system does not support threads, then this function will revert
        back to normal FSM threads.

        If the `real_thread' is TRUE then FSM will allocate new SilcSchedule
        for the FSM thread. If you need scheduler in the real thread it is
        strongly recommended that you use the SilcSchedule that is allocated
        for the thread.  You can retrieve the SilcSchedule from the thread
        using silc_fsm_get_schedule function.  Note that, the allocated
        SilcSchedule will become invalid after the thread finishes.

        If `real_thread' is FALSE the silc_fsm_get_schedule will return
        the SilcSchedule that was originally given to silc_fsm_alloc or
        silc_fsm_init.
EXAMPLE
        SILC_FSM_STATE(silc_foo_state)
        {
          SilcFSMThread thread;
          ...

          // Execute the route lookup in thread
          thread = silc_fsm_thread_alloc(fsm, fsm_context, NULL, NULL, FALSE);
          silc_fsm_start(thread, silc_route_lookup_start);

          // Wait here for the thread to terminate. Set the state where to go
          // after the thread has terminated.
          silc_fsm_next(fsm, silc_foo_route_lookup_finished);
          SILC_FSM_THREAD_WAIT(thread);
        }
SILC Finite State Machine SilcFSM SilcFSMStruct SilcFSMThread SilcFSMThreadStruct SILC_FSM_CONTINUE SILC_FSM_YIELD SILC_FSM_WAIT SILC_FSM_FINISH SilcFSMDestructor SilcFSMThreadDestructor SILC_FSM_STATE SILC_FSM_CALL SILC_FSM_CALL_CONTINUE SILC_FSM_CALL_CONTINUE_SYNC SILC_FSM_THREAD_WAIT silc_fsm_alloc silc_fsm_init silc_fsm_thread_alloc silc_fsm_thread_init silc_fsm_free silc_fsm_start silc_fsm_start_sync silc_fsm_next silc_fsm_next_later silc_fsm_continue silc_fsm_continue_sync silc_fsm_finish silc_fsm_set_context silc_fsm_get_context silc_fsm_set_state_context silc_fsm_get_state_context silc_fsm_get_schedule silc_fsm_get_machine silc_fsm_is_started SilcFSMEvent SilcFSMEventStruct silc_fsm_event_alloc silc_fsm_event_init silc_fsm_event_free SILC_FSM_EVENT_WAIT SILC_FSM_EVENT_TIMEDWAIT SILC_FSM_EVENT_SIGNAL

Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index