GUAC-1389: Document process management functions. Remove unnecessary parameter.
This commit is contained in:
parent
26bdd9bc38
commit
ed44e0c4b0
@ -291,7 +291,7 @@ static int guacd_route_connection(guacd_proc_map* map, guac_socket* socket) {
|
|||||||
else {
|
else {
|
||||||
|
|
||||||
guacd_log(GUAC_LOG_INFO, "Creating new client for protocol \"%s\"", identifier);
|
guacd_log(GUAC_LOG_INFO, "Creating new client for protocol \"%s\"", identifier);
|
||||||
proc = guacd_create_proc(parser, identifier);
|
proc = guacd_create_proc(identifier);
|
||||||
|
|
||||||
new_process = 1;
|
new_process = 1;
|
||||||
|
|
||||||
|
@ -102,7 +102,17 @@ static void guacd_free_mimetypes(char** mimetypes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the initial handshake of a user and all subsequent I/O.
|
* Handles the initial handshake of a user and all subsequent I/O. This
|
||||||
|
* function blocks until the user disconnects.
|
||||||
|
*
|
||||||
|
* @param user
|
||||||
|
* The user whose handshake and entire Guacamole protocol exchange should
|
||||||
|
* be handled.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* Zero if the user's Guacamole connection was successfully handled and
|
||||||
|
* the user has disconnected, or non-zero if an error prevented the user's
|
||||||
|
* connection from being handled properly.
|
||||||
*/
|
*/
|
||||||
static int guacd_handle_user(guac_user* user) {
|
static int guacd_handle_user(guac_user* user) {
|
||||||
|
|
||||||
@ -267,8 +277,17 @@ typedef struct guacd_user_thread_params {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a user's entire connection and socket lifecycle.
|
* Handles a user's entire connection and socket lifecycle.
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
* A pointer to a guacd_user_thread_params structure describing the user's
|
||||||
|
* associated file descriptor, whether that user is the connection owner
|
||||||
|
* (the first person to join), as well as the process associated with the
|
||||||
|
* connection being joined.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* Always NULL.
|
||||||
*/
|
*/
|
||||||
void* guacd_user_thread(void* data) {
|
static void* guacd_user_thread(void* data) {
|
||||||
|
|
||||||
guacd_user_thread_params* params = (guacd_user_thread_params*) data;
|
guacd_user_thread_params* params = (guacd_user_thread_params*) data;
|
||||||
guacd_proc* proc = params->proc;
|
guacd_proc* proc = params->proc;
|
||||||
@ -305,7 +324,19 @@ void* guacd_user_thread(void* data) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Begins a new user connection under a given process, using the given file
|
* Begins a new user connection under a given process, using the given file
|
||||||
* descriptor.
|
* descriptor. The connection will be managed by a separate and detached thread
|
||||||
|
* which is started by this function.
|
||||||
|
*
|
||||||
|
* @param proc
|
||||||
|
* The process that the user is being added to.
|
||||||
|
*
|
||||||
|
* @param fd
|
||||||
|
* The file descriptor associated with the user's network connection to
|
||||||
|
* guacd.
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
* Non-zero if the user is the owner of the connection being joined (they
|
||||||
|
* are the first user to join), or zero otherwise.
|
||||||
*/
|
*/
|
||||||
static void guacd_proc_add_user(guacd_proc* proc, int fd, int owner) {
|
static void guacd_proc_add_user(guacd_proc* proc, int fd, int owner) {
|
||||||
|
|
||||||
@ -322,9 +353,18 @@ static void guacd_proc_add_user(guacd_proc* proc, int fd, int owner) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts protocol-specific handling on the given process. This function does
|
* Starts protocol-specific handling on the given process by loading the client
|
||||||
* NOT return. It initializes the process with protocol-specific handlers and
|
* plugin for that protocol. This function does NOT return. It initializes the
|
||||||
* then runs until the fd_socket is closed.
|
* process with protocol-specific handlers and then runs until the guacd_proc's
|
||||||
|
* fd_socket is closed, adding any file descriptors received along fd_socket as
|
||||||
|
* new users.
|
||||||
|
*
|
||||||
|
* @param proc
|
||||||
|
* The process that any new users received along fd_socket should be added
|
||||||
|
* to (after the process has been initialized for the given protocol).
|
||||||
|
*
|
||||||
|
* @param protocol
|
||||||
|
* The protocol to initialize the given process for.
|
||||||
*/
|
*/
|
||||||
static void guacd_exec_proc(guacd_proc* proc, const char* protocol) {
|
static void guacd_exec_proc(guacd_proc* proc, const char* protocol) {
|
||||||
|
|
||||||
@ -370,7 +410,7 @@ static void guacd_exec_proc(guacd_proc* proc, const char* protocol) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
guacd_proc* guacd_create_proc(guac_parser* parser, const char* protocol) {
|
guacd_proc* guacd_create_proc(const char* protocol) {
|
||||||
|
|
||||||
int sockets[2];
|
int sockets[2];
|
||||||
|
|
||||||
|
@ -63,16 +63,27 @@ typedef struct guacd_proc {
|
|||||||
} guacd_proc;
|
} guacd_proc;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new process for handling the given protocol, returning the process
|
* Creates a new background process for handling the given protocol, returning
|
||||||
* created. The created process runs in the background relative to the calling
|
* a structure allowing communication with and monitoring of the process
|
||||||
* process. Within the child process, this function does not return - the
|
* created. Within the child process, this function does not return - the
|
||||||
* entire child process simply terminates instead.
|
* entire child process simply terminates instead.
|
||||||
|
*
|
||||||
|
* @param protocol
|
||||||
|
* The protocol for which this process is client being created.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* A newly-allocated process structure pointing to the file descriptor of
|
||||||
|
* the background process specific to the specified protocol, or NULL of
|
||||||
|
* the process could not be created.
|
||||||
*/
|
*/
|
||||||
guacd_proc* guacd_create_proc(guac_parser* parser, const char* protocol);
|
guacd_proc* guacd_create_proc(const char* protocol);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signals the given process to stop accepting new users and clean up. This
|
* Signals the given process to stop accepting new users and clean up. This
|
||||||
* will eventually cause the child process to exit.
|
* will eventually cause the child process to exit.
|
||||||
|
*
|
||||||
|
* @param proc
|
||||||
|
* The process to stop.
|
||||||
*/
|
*/
|
||||||
void guacd_proc_stop(guacd_proc* proc);
|
void guacd_proc_stop(guacd_proc* proc);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user