Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2005 Pekka Riikonen
+ Copyright (C) 1997 - 2006 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
/* Signal thread that packet has arrived */
if (!thread->new_packet) {
thread->new_packet = TRUE;
- SILC_FSM_SEMA_POST(&thread->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&thread->wait_event);
}
return TRUE;
/* Signal server of new connection */
if (!server->new_connection) {
server->new_connection = TRUE;
- SILC_FSM_SEMA_POST(&server->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&server->wait_event);
}
}
/*** Run thread's machine */
silc_fsm_init(&thread->fsm, thread, NULL, NULL, silc_fsm_get_schedule(fsm));
- silc_fsm_sema_init(&thread->wait_event, &thread->fsm, 0);
+ silc_fsm_event_init(&thread->wait_event, &thread->fsm, 0);
silc_fsm_start_sync(&thread->fsm, silc_server_thread_st_run);
/* Signal server that we are up */
- SILC_FSM_SEMA_POST(&thread->server->thread_up);
+ SILC_FSM_EVENT_SIGNAL(&thread->server->thread_up);
/* Wait here for this thread to finish */
return SILC_FSM_WAIT;
SILC_LOG_DEBUG(("Start"));
/* Wait for events */
- SILC_FSM_SEMA_WAIT(&thread->wait_event);
+ SILC_FSM_EVENT_WAIT(&thread->wait_event);
/* Process events */
/* Each packet is processed in FSM thread */
silc_list_start(thread->packet_queue);
while ((packet = silc_list_get(thread->packet_queue)) != SILC_LIST_END) {
+ /* XXX shouldn't the fsm be &thread->fsm */
t = silc_fsm_thread_alloc(fsm, thread, silc_server_thread_packet_dest,
NULL, FALSE);
if (t) {
silc_list_start(thread->new_conns);
while ((ac = silc_list_get(thread->new_conns)) != SILC_LIST_END) {
ac->thread = thread;
- ac->t = silc_fsm_thread_alloc(&thread->fsm, ac,
- silc_server_accept_connection_dest,
- NULL, FALSE);
- silc_fsm_start(ac->t, silc_server_st_accept_connection);
+ silc_fsm_thread_init(&ac->t, &thread->fsm, ac,
+ silc_server_accept_connection_dest,
+ NULL, FALSE);
+ silc_fsm_start(&ac->t, silc_server_st_accept_connection);
}
/* Empty the list */
SILC_LOG_DEBUG(("Start"));
/* Wait for events */
- SILC_FSM_SEMA_WAIT(&server->wait_event);
+ SILC_FSM_EVENT_WAIT(&server->wait_event);
/* Process events */
/* Signal the thread for new connection */
if (!thread->new_connection) {
thread->new_connection = TRUE;
- SILC_FSM_SEMA_POST(&thread->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&thread->wait_event);
}
silc_mutex_unlock(server->lock);
}
SilcServer server = fsm_context;
/* Wait here until new thread is up */
- SILC_FSM_SEMA_WAIT(&server->thread_up);
+ SILC_FSM_EVENT_WAIT(&server->thread_up);
/** Process new connections */
silc_fsm_next(fsm, silc_server_st_new_connection);
silc_fsm_init(&server->fsm, server, silc_server_destructor, NULL, schedule);
/* Init semaphore signallers */
- silc_fsm_sema_init(&server->wait_event, &server->fsm, 0);
- silc_fsm_sema_init(&server->thread_up, &server->fsm, 0);
+ silc_fsm_event_init(&server->wait_event, &server->fsm, 0);
+ silc_fsm_event_init(&server->thread_up, &server->fsm, 0);
/* Initialize lists */
silc_list_init(server->new_conns, struct SilcServerAcceptStruct, next);
server->params->server_info->public_key = NULL;
server->params->server_info->private_key = NULL;
- /* Allocate PKCS context for local public and private keys */
- if (!silc_pkcs_alloc(server->public_key->name, SILC_PKCS_SILC,
- &server->pkcs))
- goto err;
- silc_pkcs_public_key_set(server->pkcs, server->public_key);
- silc_pkcs_private_key_set(server->pkcs, server->private_key);
-
/* Create network listener(s) */
server->listeners = silc_dlist_init();
if (!server->listeners)
/* Signal the application when we are running */
server->run_callback = TRUE;
- SILC_FSM_SEMA_POST(&server->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&server->wait_event);
/* Signal to connect to router */
server->connect_router = TRUE;
- SILC_FSM_SEMA_POST(&server->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&server->wait_event);
/* Start getting statistics from the network on normal server */
if (server->server_type != SILC_ROUTER) {
server->get_statistics = TRUE;
- SILC_FSM_SEMA_POST(&server->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&server->wait_event);
}
}
/* Signal that server is going down */
server->server_shutdown = TRUE;
- SILC_FSM_SEMA_POST(&server->wait_event);
+ SILC_FSM_EVENT_SIGNAL(&server->wait_event);
}
/* Disconnects remote connection */