20 #ifndef _GUAC_CLIENT_H
21 #define _GUAC_CLIENT_H
41 #include <cairo/cairo.h>
165 pthread_rwlock_t __users_lock;
258 void* __plugin_handle;
288 const char* format, ...);
302 const char* format, va_list ap);
325 const char* format, ...);
340 const char* format, va_list ap);
593 const char* mimetype,
const char* name,
const char* value);
626 cairo_surface_t* surface);
664 cairo_surface_t* surface,
int quality);
709 cairo_surface_t* surface,
int quality,
int lossless);
Constants related to the Guacamole client structure, guac_client.
Function type definitions related to the Guacamole client structure, guac_client.
void guac_client_log_handler(guac_client *client, guac_client_log_level level, const char *format, va_list args)
Handler for logging messages related to a given guac_client instance.
Definition: client-fntypes.h:67
int guac_client_free_handler(guac_client *client)
Handler for freeing up any extra data allocated by the client implementation.
Definition: client-fntypes.h:49
Type definitions related to the Guacamole client structure, guac_client.
guac_client_state
Possible current states of the Guacamole client.
Definition: client-types.h:41
guac_client_log_level
All supported log levels used by the logging subsystem of each Guacamole client.
Definition: client-types.h:62
void guac_client_stop(guac_client *client)
Signals the given client to stop gracefully.
void guac_client_remove_user(guac_client *client, guac_user *user)
Removes the given user, removing the user from the internally-tracked list of connected users,...
guac_stream * guac_client_alloc_stream(guac_client *client)
Allocates a new stream.
guac_layer * guac_client_alloc_layer(guac_client *client)
Allocates a new layer.
void guac_client_stream_png(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface)
Streams the image data of the given surface over an image stream ("img" instruction) as PNG-encoded d...
const guac_layer * GUAC_DEFAULT_LAYER
The default Guacamole client layer, layer 0.
guac_client * guac_client_alloc()
Returns a new, barebones guac_client.
int guac_client_owner_supports_required(guac_client *client)
Returns whether the owner of the given client supports the "required" instruction,...
void vguac_client_log(guac_client *client, guac_client_log_level level, const char *format, va_list ap)
Writes a message in the log used by the given client.
void vguac_client_abort(guac_client *client, guac_protocol_status status, const char *format, va_list ap)
Signals the given client to stop gracefully, while also signalling via the Guacamole protocol that an...
void guac_client_free_layer(guac_client *client, guac_layer *layer)
Returns the given layer to the pool of available layers, such that it can be reused by any subsequent...
void guac_client_stream_webp(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface, int quality, int lossless)
Streams the image data of the given surface over an image stream ("img" instruction) as WebP-encoded ...
void guac_client_abort(guac_client *client, guac_protocol_status status, const char *format,...)
Signals the given client to stop gracefully, while also signalling via the Guacamole protocol that an...
int guac_client_end_frame(guac_client *client)
Marks the end of the current frame by sending a "sync" instruction to all connected users.
void guac_client_stream_argv(guac_client *client, guac_socket *socket, const char *mimetype, const char *name, const char *value)
Streams the given connection parameter value over an argument value stream ("argv" instruction),...
void guac_client_free(guac_client *client)
Free all resources associated with the given client.
int guac_client_supports_webp(guac_client *client)
Returns whether all users of the given client support WebP.
void * guac_client_for_user(guac_client *client, guac_user *user, guac_user_callback *callback, void *data)
Calls the given function with the given user ONLY if they are currently connected.
int guac_client_get_processing_lag(guac_client *client)
Calculates and returns the approximate processing lag experienced by the pool of users.
void guac_client_stream_jpeg(guac_client *client, guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int x, int y, cairo_surface_t *surface, int quality)
Streams the image data of the given surface over an image stream ("img" instruction) as JPEG-encoded ...
void guac_client_log(guac_client *client, guac_client_log_level level, const char *format,...)
Writes a message in the log used by the given client.
int guac_client_owner_send_required(guac_client *client, const char **required)
Sends a request to the owner of the given guac_client for parameters required to continue the connect...
void guac_client_free_stream(guac_client *client, guac_stream *stream)
Returns the given stream to the pool of available streams, such that it can be reused by any subseque...
void * guac_client_for_owner(guac_client *client, guac_user_callback *callback, void *data)
Calls the given function with the currently-connected user that is marked as the owner.
void guac_client_foreach_user(guac_client *client, guac_user_callback *callback, void *data)
Calls the given function on all currently-connected users of the given client.
guac_layer * guac_client_alloc_buffer(guac_client *client)
Allocates a new buffer (invisible layer).
int guac_client_add_user(guac_client *client, guac_user *user, int argc, char **argv)
Adds the given user to the internal list of connected users.
int guac_client_load_plugin(guac_client *client, const char *protocol)
Initializes the given guac_client using the initialization routine provided by the plugin correspondi...
void guac_client_free_buffer(guac_client *client, guac_layer *layer)
Returns the given buffer to the pool of available buffers, such that it can be reused by any subseque...
Type definitions related to Guacamole layers.
Type definitions related to Guacamole protocol objects.
Type definitions related to the guac_pool pool of unique integers.
guac_composite_mode
Composite modes used by Guacamole draw instructions.
Definition: protocol-types.h:170
guac_protocol_status
Set of all possible status codes returned by protocol operations.
Definition: protocol-types.h:44
Type definitions related to the guac_socket object.
Type definitions related to Guacamole protocol streams.
Guacamole proxy client.
Definition: client.h:46
void * data
Arbitrary reference to proxy client-specific data.
Definition: client.h:72
guac_user_join_handler * join_handler
Handler for join events, called whenever a new user is joining an active connection.
Definition: client.h:207
const char ** args
NULL-terminated array of all arguments accepted by this client , in order.
Definition: client.h:251
guac_timestamp last_sent_timestamp
The time (in milliseconds) that the last sync message was sent to the client.
Definition: client.h:78
guac_client_log_handler * log_handler
Logging handler.
Definition: client.h:125
int connected_users
The number of currently-connected users.
Definition: client.h:184
guac_client_free_handler * free_handler
Handler for freeing data when the client is being unloaded.
Definition: client.h:101
guac_socket * socket
The guac_socket structure to be used to communicate with all connected web-clients (users).
Definition: client.h:57
guac_client_state state
The current state of the client.
Definition: client.h:65
char * connection_id
The unique identifier allocated for the connection, which may be used within the Guacamole protocol t...
Definition: client.h:159
guac_user_leave_handler * leave_handler
Handler for leave events, called whenever a new user is leaving an active connection.
Definition: client.h:225
Represents a single layer within the Guacamole protocol.
Definition: layer.h:34
A pool of integers.
Definition: pool.h:34
The core I/O object of Guacamole.
Definition: socket.h:39
Represents a single stream within the Guacamole protocol.
Definition: stream.h:32
Representation of a physical connection within a larger logical connection which may be shared.
Definition: user.h:107
Type definitions related to Guacamole protocol timestamps.
int64_t guac_timestamp
An arbitrary timestamp denoting a relative time value in milliseconds.
Definition: timestamp-types.h:34
Function type definitions related to the guac_user object.
int guac_user_join_handler(guac_user *user, int argc, char **argv)
Handler for Guacamole join events.
Definition: user-fntypes.h:411
void * guac_user_callback(guac_user *user, void *data)
Callback which relates to a single guac_user at a time, along with arbitrary data.
Definition: user-fntypes.h:59
int guac_user_leave_handler(guac_user *user)
Handler for Guacamole leave events.
Definition: user-fntypes.h:430
Type definitions related to the guac_user object.