src/libguac/guacamole/socket-fntypes.h (14 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #ifndef _GUAC_SOCKET_FNTYPES_H #define _GUAC_SOCKET_FNTYPES_H /** * Function type definitions related to the guac_socket object. * * @file socket-fntypes.h */ #include "socket-types.h" #include <unistd.h> /** * Generic read handler for socket read operations, modeled after the standard * POSIX read() function. When set within a guac_socket, a handler of this type * will be called when data needs to be read into the socket. * * @param socket The guac_socket being read from. * @param buf The arbitrary buffer we must populate with data. * @param count The maximum number of bytes to read into the buffer. * @return The number of bytes read, or -1 if an error occurs. */ typedef ssize_t guac_socket_read_handler(guac_socket* socket, void* buf, size_t count); /** * Generic write handler for socket write operations, modeled after the standard * POSIX write() function. When set within a guac_socket, a handler of this type * will be called when data needs to be written to the socket. * * @param socket The guac_socket being written to. * @param buf The arbitrary buffer containing data to be written. * @param count The maximum number of bytes to written to the buffer. * @return The number of bytes written, or -1 if an error occurs. */ typedef ssize_t guac_socket_write_handler(guac_socket* socket, const void* buf, size_t count); /** * Generic handler for socket select operations, similar to the POSIX select() * function. When guac_socket_select() is called on a guac_socket, its * guac_socket_select_handler will be invoked, if defined. * * @param socket The guac_socket being selected. * @param usec_timeout The maximum number of microseconds to wait for data, or * -1 to potentially wait forever. * @return Positive on success, zero if the timeout elapsed and no data is * available, negative on error. */ typedef int guac_socket_select_handler(guac_socket* socket, int usec_timeout); /** * Generic flush handler for socket flush operations. This function is not * modeled after any POSIX function. When set within a guac_socket, a handler * of this type will be called when guac_socket_flush() is called. * * @param socket * The guac_socket being flushed. * * @return * Zero on success, or non-zero if an error occurs during flush. */ typedef ssize_t guac_socket_flush_handler(guac_socket* socket); /** * When set within a guac_socket, a handler of this type will be called * whenever exclusive access to the guac_socket is required, such as when * guac_socket_instruction_begin() is called. * * @param socket * The guac_socket to which exclusive access is required. */ typedef void guac_socket_lock_handler(guac_socket* socket); /** * When set within a guac_socket, a handler of this type will be called * whenever exclusive access to the guac_socket is no longer required, such as * when guac_socket_instruction_end() is called. * * @param socket * The guac_socket to which exclusive access is no longer required. */ typedef void guac_socket_unlock_handler(guac_socket* socket); /** * Generic handler for the closing of a socket, modeled after the standard * POSIX close() function. When set within a guac_socket, a handler of this type * will be called when the socket is closed. * * @param socket The guac_socket being closed. * @return Zero on success, or -1 if an error occurs. */ typedef int guac_socket_free_handler(guac_socket* socket); #endif