libguac  0.9.13-incubating
protocol.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #ifndef _GUAC_PROTOCOL_H
21 #define _GUAC_PROTOCOL_H
22 
31 #include "layer-types.h"
32 #include "object-types.h"
33 #include "protocol-types.h"
34 #include "socket-types.h"
35 #include "stream-types.h"
36 #include "timestamp-types.h"
37 
38 #include <cairo/cairo.h>
39 #include <stdarg.h>
40 
41 /* CONTROL INSTRUCTIONS */
42 
58  const char* error, guac_protocol_status status);
59 
70 int guac_protocol_send_args(guac_socket* socket, const char** args);
71 
82 int guac_protocol_send_connect(guac_socket* socket, const char** args);
83 
94 
106 int guac_protocol_send_error(guac_socket* socket, const char* error,
107  guac_protocol_status status);
108 
121 int guac_protocol_send_log(guac_socket* socket, const char* format, ...);
122 
144 int vguac_protocol_send_log(guac_socket* socket, const char* format,
145  va_list args);
146 
165 int guac_protocol_send_mouse(guac_socket* socket, int x, int y);
166 
180 int guac_protocol_send_nest(guac_socket* socket, int index,
181  const char* data);
182 
194 
205 int guac_protocol_send_ready(guac_socket* socket, const char* id);
206 
219 int guac_protocol_send_set(guac_socket* socket, const guac_layer* layer,
220  const char* name, const char* value);
221 
232 int guac_protocol_send_select(guac_socket* socket, const char* protocol);
233 
245 int guac_protocol_send_sync(guac_socket* socket, guac_timestamp timestamp);
246 
247 /* OBJECT INSTRUCTIONS */
248 
274 int guac_protocol_send_body(guac_socket* socket, const guac_object* object,
275  const guac_stream* stream, const char* mimetype, const char* name);
276 
296  const guac_object* object, const char* name);
297 
314  const guac_object* object);
315 
316 /* MEDIA INSTRUCTIONS */
317 
336 int guac_protocol_send_audio(guac_socket* socket, const guac_stream* stream,
337  const char* mimetype);
338 
351 int guac_protocol_send_file(guac_socket* socket, const guac_stream* stream,
352  const char* mimetype, const char* name);
353 
366 int guac_protocol_send_pipe(guac_socket* socket, const guac_stream* stream,
367  const char* mimetype, const char* name);
368 
383 int guac_protocol_send_blob(guac_socket* socket, const guac_stream* stream,
384  const void* data, int count);
385 
396 int guac_protocol_send_end(guac_socket* socket, const guac_stream* stream);
397 
419 int guac_protocol_send_video(guac_socket* socket, const guac_stream* stream,
420  const guac_layer* layer, const char* mimetype);
421 
422 /* DRAWING INSTRUCTIONS */
423 
441 int guac_protocol_send_arc(guac_socket* socket, const guac_layer* layer,
442  int x, int y, int radius, double startAngle, double endAngle,
443  int negative);
444 
461  guac_composite_mode mode, const guac_layer* layer,
462  int r, int g, int b, int a);
463 
474 int guac_protocol_send_clip(guac_socket* socket, const guac_layer* layer);
475 
486 int guac_protocol_send_close(guac_socket* socket, const guac_layer* layer);
487 
509  const guac_layer* srcl, int srcx, int srcy, int w, int h,
510  guac_composite_mode mode, const guac_layer* dstl, int dstx, int dsty);
511 
531  guac_composite_mode mode, const guac_layer* layer,
532  guac_line_cap_style cap, guac_line_join_style join, int thickness,
533  int r, int g, int b, int a);
534 
551 int guac_protocol_send_cursor(guac_socket* socket, int x, int y,
552  const guac_layer* srcl, int srcx, int srcy, int w, int h);
553 
570 int guac_protocol_send_curve(guac_socket* socket, const guac_layer* layer,
571  int cp1x, int cp1y, int cp2x, int cp2y, int x, int y);
572 
583 int guac_protocol_send_identity(guac_socket* socket, const guac_layer* layer);
584 
598  guac_composite_mode mode, const guac_layer* layer,
599  const guac_layer* srcl);
600 
613 int guac_protocol_send_line(guac_socket* socket, const guac_layer* layer,
614  int x, int y);
615 
632  guac_composite_mode mode, const guac_layer* layer,
633  guac_line_cap_style cap, guac_line_join_style join, int thickness,
634  const guac_layer* srcl);
635 
669 int guac_protocol_send_img(guac_socket* socket, const guac_stream* stream,
670  guac_composite_mode mode, const guac_layer* layer,
671  const char* mimetype, int x, int y);
672 
683 int guac_protocol_send_pop(guac_socket* socket, const guac_layer* layer);
684 
695 int guac_protocol_send_push(guac_socket* socket, const guac_layer* layer);
696 
711 int guac_protocol_send_rect(guac_socket* socket, const guac_layer* layer,
712  int x, int y, int width, int height);
713 
724 int guac_protocol_send_reset(guac_socket* socket, const guac_layer* layer);
725 
738 int guac_protocol_send_start(guac_socket* socket, const guac_layer* layer,
739  int x, int y);
740 
762  const guac_layer* srcl, int srcx, int srcy, int w, int h,
763  guac_transfer_function fn, const guac_layer* dstl, int dstx, int dsty);
764 
782  const guac_layer* layer,
783  double a, double b, double c,
784  double d, double e, double f);
785 
786 /* LAYER INSTRUCTIONS */
787 
798 int guac_protocol_send_dispose(guac_socket* socket, const guac_layer* layer);
799 
817  const guac_layer* layer,
818  double a, double b, double c,
819  double d, double e, double f);
820 
836 int guac_protocol_send_move(guac_socket* socket, const guac_layer* layer,
837  const guac_layer* parent, int x, int y, int z);
838 
850 int guac_protocol_send_shade(guac_socket* socket, const guac_layer* layer,
851  int a);
852 
865 int guac_protocol_send_size(guac_socket* socket, const guac_layer* layer,
866  int w, int h);
867 
868 /* TEXT INSTRUCTIONS */
869 
881 int guac_protocol_send_clipboard(guac_socket* socket, const guac_stream* stream,
882  const char* mimetype);
883 
891 int guac_protocol_send_name(guac_socket* socket, const char* name);
892 
900 int guac_protocol_decode_base64(char* base64);
901 
902 #endif
903 
int guac_protocol_send_set(guac_socket *socket, const guac_layer *layer, const char *name, const char *value)
Sends a set instruction over the given guac_socket connection.
int guac_protocol_send_args(guac_socket *socket, const char **args)
Sends an args instruction over the given guac_socket connection.
int guac_protocol_send_end(guac_socket *socket, const guac_stream *stream)
Sends an end instruction over the given guac_socket connection.
int guac_protocol_send_distort(guac_socket *socket, const guac_layer *layer, double a, double b, double c, double d, double e, double f)
Sends a distort instruction over the given guac_socket connection.
int guac_protocol_send_select(guac_socket *socket, const char *protocol)
Sends a select instruction over the given guac_socket connection.
int guac_protocol_send_filesystem(guac_socket *socket, const guac_object *object, const char *name)
Sends a filesystem instruction over the given guac_socket connection.
int guac_protocol_send_lstroke(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, guac_line_cap_style cap, guac_line_join_style join, int thickness, const guac_layer *srcl)
Sends an lstroke instruction over the given guac_socket connection.
int guac_protocol_send_clipboard(guac_socket *socket, const guac_stream *stream, const char *mimetype)
Sends a clipboard instruction over the given guac_socket connection.
int guac_protocol_send_ready(guac_socket *socket, const char *id)
Sends a ready instruction over the given guac_socket connection.
Type definitions related to the guac_socket object.
int guac_protocol_send_cstroke(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, guac_line_cap_style cap, guac_line_join_style join, int thickness, int r, int g, int b, int a)
Sends a cstroke instruction over the given guac_socket connection.
int guac_protocol_send_video(guac_socket *socket, const guac_stream *stream, const guac_layer *layer, const char *mimetype)
Sends a video instruction over the given guac_socket connection.
int guac_protocol_send_reset(guac_socket *socket, const guac_layer *layer)
Sends a reset instruction over the given guac_socket connection.
int guac_protocol_decode_base64(char *base64)
Decodes the given base64-encoded string in-place.
Type definitions related to Guacamole protocol streams.
The core I/O object of Guacamole.
Definition: socket.h:39
int guac_protocol_send_img(guac_socket *socket, const guac_stream *stream, guac_composite_mode mode, const guac_layer *layer, const char *mimetype, int x, int y)
Sends an img instruction over the given guac_socket connection.
Type definitions related to Guacamole protocol objects.
int guac_protocol_send_nop(guac_socket *socket)
Sends a nop instruction (null-operation) over the given guac_socket connection.
int guac_protocol_send_name(guac_socket *socket, const char *name)
Sends a name instruction over the given guac_socket connection.
int guac_protocol_send_transfer(guac_socket *socket, const guac_layer *srcl, int srcx, int srcy, int w, int h, guac_transfer_function fn, const guac_layer *dstl, int dstx, int dsty)
Sends a transfer instruction over the given guac_socket connection.
int guac_protocol_send_audio(guac_socket *socket, const guac_stream *stream, const char *mimetype)
Sends an audio instruction over the given guac_socket connection.
guac_line_join_style
Supported line join styles.
Definition: protocol-types.h:273
int guac_protocol_send_disconnect(guac_socket *socket)
Sends a disconnect instruction over the given guac_socket connection.
int guac_protocol_send_arc(guac_socket *socket, const guac_layer *layer, int x, int y, int radius, double startAngle, double endAngle, int negative)
Sends an arc instruction over the given guac_socket connection.
int vguac_protocol_send_log(guac_socket *socket, const char *format, va_list args)
Sends a log instruction over the given guac_socket connection.
int guac_protocol_send_move(guac_socket *socket, const guac_layer *layer, const guac_layer *parent, int x, int y, int z)
Sends a move instruction over the given guac_socket connection.
Represents a single object within the Guacamole protocol.
Definition: object.h:32
int guac_protocol_send_blob(guac_socket *socket, const guac_stream *stream, const void *data, int count)
Writes a block of data to the currently in-progress blob which was already created.
int guac_protocol_send_rect(guac_socket *socket, const guac_layer *layer, int x, int y, int width, int height)
Sends a rect instruction over the given guac_socket connection.
int guac_protocol_send_cursor(guac_socket *socket, int x, int y, const guac_layer *srcl, int srcx, int srcy, int w, int h)
Sends a cursor instruction over the given guac_socket connection.
int guac_protocol_send_log(guac_socket *socket, const char *format,...)
Sends a log instruction over the given guac_socket connection.
int guac_protocol_send_identity(guac_socket *socket, const guac_layer *layer)
Sends an identity instruction over the given guac_socket connection.
int guac_protocol_send_curve(guac_socket *socket, const guac_layer *layer, int cp1x, int cp1y, int cp2x, int cp2y, int x, int y)
Sends a curve instruction over the given guac_socket connection.
int guac_protocol_send_close(guac_socket *socket, const guac_layer *layer)
Sends a close instruction over the given guac_socket connection.
guac_transfer_function
Default transfer functions.
Definition: protocol-types.h:219
int guac_protocol_send_dispose(guac_socket *socket, const guac_layer *layer)
Sends a dispose instruction over the given guac_socket connection.
int guac_protocol_send_start(guac_socket *socket, const guac_layer *layer, int x, int y)
Sends a start instruction over the given guac_socket connection.
int guac_protocol_send_sync(guac_socket *socket, guac_timestamp timestamp)
Sends a sync instruction over the given guac_socket connection.
int guac_protocol_send_lfill(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, const guac_layer *srcl)
Sends an lfill instruction over the given guac_socket connection.
guac_line_cap_style
Supported line cap styles.
Definition: protocol-types.h:264
int guac_protocol_send_nest(guac_socket *socket, int index, const char *data)
Sends a nest instruction over the given guac_socket connection.
int guac_protocol_send_body(guac_socket *socket, const guac_object *object, const guac_stream *stream, const char *mimetype, const char *name)
Sends a body instruction over the given guac_socket connection.
int guac_protocol_send_line(guac_socket *socket, const guac_layer *layer, int x, int y)
Sends a line instruction over the given guac_socket connection.
Type definitions related to the Guacamole protocol.
int guac_protocol_send_copy(guac_socket *socket, const guac_layer *srcl, int srcx, int srcy, int w, int h, guac_composite_mode mode, const guac_layer *dstl, int dstx, int dsty)
Sends a copy instruction over the given guac_socket connection.
int guac_protocol_send_push(guac_socket *socket, const guac_layer *layer)
Sends a push instruction over the given guac_socket connection.
int64_t guac_timestamp
An arbitrary timestamp denoting a relative time value in milliseconds.
Definition: timestamp-types.h:34
int guac_protocol_send_shade(guac_socket *socket, const guac_layer *layer, int a)
Sends a shade instruction over the given guac_socket connection.
int guac_protocol_send_clip(guac_socket *socket, const guac_layer *layer)
Sends a clip instruction over the given guac_socket connection.
int guac_protocol_send_file(guac_socket *socket, const guac_stream *stream, const char *mimetype, const char *name)
Sends a file instruction over the given guac_socket connection.
int guac_protocol_send_undefine(guac_socket *socket, const guac_object *object)
Sends an undefine instruction over the given guac_socket connection.
int guac_protocol_send_pop(guac_socket *socket, const guac_layer *layer)
Sends a pop instruction over the given guac_socket connection.
int guac_protocol_send_transform(guac_socket *socket, const guac_layer *layer, double a, double b, double c, double d, double e, double f)
Sends a transform instruction over the given guac_socket connection.
int guac_protocol_send_size(guac_socket *socket, const guac_layer *layer, int w, int h)
Sends a size instruction over the given guac_socket connection.
Type definitions related to Guacamole layers.
guac_composite_mode
Composite modes used by Guacamole draw instructions.
Definition: protocol-types.h:170
int guac_protocol_send_pipe(guac_socket *socket, const guac_stream *stream, const char *mimetype, const char *name)
Sends a pipe instruction over the given guac_socket connection.
guac_protocol_status
Set of all possible status codes returned by protocol operations.
Definition: protocol-types.h:44
Represents a single layer within the Guacamole protocol.
Definition: layer.h:34
Represents a single stream within the Guacamole protocol.
Definition: stream.h:32
int guac_protocol_send_mouse(guac_socket *socket, int x, int y)
Sends a mouse instruction over the given guac_socket connection.
int guac_protocol_send_connect(guac_socket *socket, const char **args)
Sends a connect instruction over the given guac_socket connection.
int guac_protocol_send_error(guac_socket *socket, const char *error, guac_protocol_status status)
Sends an error instruction over the given guac_socket connection.
int guac_protocol_send_ack(guac_socket *socket, guac_stream *stream, const char *error, guac_protocol_status status)
Sends an ack instruction over the given guac_socket connection.
int guac_protocol_send_cfill(guac_socket *socket, guac_composite_mode mode, const guac_layer *layer, int r, int g, int b, int a)
Sends a cfill instruction over the given guac_socket connection.
Type definitions related to Guacamole protocol timestamps.