50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
/**
|
|
* === DO NOT MODIFY THIS FILE ===
|
|
* If you need some other prototypes or constants in a header, please put them
|
|
* in another header file.
|
|
*
|
|
* When we grade, we will be replacing this file with our own copy.
|
|
* You have been warned.
|
|
* === DO NOT MODIFY THIS FILE ===
|
|
*/
|
|
#ifndef SERVER_H
|
|
#define SERVER_H
|
|
|
|
/*
|
|
* Definitions of the commands that can be issued by a client.
|
|
*/
|
|
typedef enum tu_command {
|
|
TU_PICKUP_CMD, TU_HANGUP_CMD, TU_DIAL_CMD, TU_CHAT_CMD,
|
|
// Below are special values used in grading tests.
|
|
TU_NO_CMD = 100, TU_CONNECT_CMD = 101, TU_DISCONNECT_CMD = 102,
|
|
TU_AWAIT_CMD = 103, TU_DELAY_CMD = 104, TU_EOF_CMD = 105
|
|
} TU_COMMAND;
|
|
|
|
/*
|
|
* Array that specifies a printable name for each of the commands that
|
|
* can be issued to a TU by a client. These names should be used when
|
|
* parsing commands received from a client. They may also be used for
|
|
* debugging purposes.
|
|
*/
|
|
extern char *tu_command_names[];
|
|
|
|
/*
|
|
* Thread function for the thread that handles a particular client.
|
|
*
|
|
* @param Pointer to a variable that holds the file descriptor for
|
|
* the client connection. This variable must be freed once the file
|
|
* descriptor has been retrieved.
|
|
* @return NULL
|
|
*
|
|
* This function executes a "service loop" that receives messages from
|
|
* the client and dispatches to appropriate functions to carry out
|
|
* the client's requests. The service loop ends when the network connection
|
|
* shuts down and EOF is seen. This could occur either as a result of the
|
|
* client explicitly closing the connection, a timeout in the network causing
|
|
* the connection to be closed, or the main thread of the server shutting
|
|
* down the connection as part of graceful termination.
|
|
*/
|
|
void *pbx_client_service(void *arg);
|
|
|
|
#endif
|