X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient_internal.h;h=d3437edfc061c6cfd638c59688c2c8d7bd709ac3;hb=77336860c5d419c9d25a6366de0269c0edb38889;hp=0acee44df7bbbdfe4c7593bebee14bbc3b15cd06;hpb=5e8e3a77c70f10a29e78aa645366c84564b8bc7d;p=silc.git diff --git a/lib/silcclient/client_internal.h b/lib/silcclient/client_internal.h index 0acee44d..d3437edf 100644 --- a/lib/silcclient/client_internal.h +++ b/lib/silcclient/client_internal.h @@ -145,9 +145,14 @@ struct SilcClientInternalStruct { SilcMutex lock; /* Client lock */ SilcList commands; /* Registered commands */ char *silc_client_version; /* Version set by application */ + SilcClientRunning running; /* Running/Stopped callback */ + void *running_context; /* Context for runnign callback */ + SilcAtomic16 conns; /* Number of connections in client */ /* Events */ - unsigned int run_callback : 1; /* Call running callback */ + unsigned int stop : 1; /* Stop client */ + unsigned int run_callback : 1; /* Call running/stopped callback */ + unsigned int connection_closed : 1; /* A connection closed */ }; /* Internal context for conn->internal in SilcClientConnection. */ @@ -169,6 +174,7 @@ struct SilcClientConnectionInternalStruct { SilcBuffer local_idp; /* Local ID Payload */ SilcBuffer remote_idp; /* Remote ID Payload */ SilcAsyncOperation op; /* Protocols async operation */ + SilcAsyncOperation cop; /* Async operation for application */ SilcIDCache client_cache; /* Client entry cache */ SilcIDCache channel_cache; /* Channel entry cache */ @@ -188,6 +194,8 @@ struct SilcClientConnectionInternalStruct { unsigned int verbose : 1; /* Notify application */ unsigned int registering : 1; /* Set when registering to network */ unsigned int rekey_responder : 1; /* Set when rekeying as responder */ + unsigned int callback_called : 1; /* Set when connect callback called */ + unsigned int aborted : 1; /* Set when aborted by application */ SilcClientAway *away; SilcClientConnAuthRequest connauth; @@ -203,6 +211,7 @@ SILC_FSM_STATE(silc_client_connection_st_packet); SILC_FSM_STATE(silc_client_connection_st_close); SILC_FSM_STATE(silc_client_error); SILC_FSM_STATE(silc_client_disconnect); +SILC_FSM_STATE(silc_client_st_stop); void silc_client_del_connection(SilcClient client, SilcClientConnection conn); SilcBool silc_client_del_client(SilcClient client, SilcClientConnection conn,