libguac
0.6.1
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
client.h
Go to the documentation of this file.
1
2
/* ***** BEGIN LICENSE BLOCK *****
3
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
*
5
* The contents of this file are subject to the Mozilla Public License Version
6
* 1.1 (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
* http://www.mozilla.org/MPL/
9
*
10
* Software distributed under the License is distributed on an "AS IS" basis,
11
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
* for the specific language governing rights and limitations under the
13
* License.
14
*
15
* The Original Code is libguac.
16
*
17
* The Initial Developer of the Original Code is
18
* Michael Jumper.
19
* Portions created by the Initial Developer are Copyright (C) 2010
20
* the Initial Developer. All Rights Reserved.
21
*
22
* Contributor(s):
23
*
24
* Alternatively, the contents of this file may be used under the terms of
25
* either the GNU General Public License Version 2 or later (the "GPL"), or
26
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
* in which case the provisions of the GPL or the LGPL are applicable instead
28
* of those above. If you wish to allow use of your version of this file only
29
* under the terms of either the GPL or the LGPL, and not to allow others to
30
* use your version of this file under the terms of the MPL, indicate your
31
* decision by deleting the provisions above and replace them with the notice
32
* and other provisions required by the GPL or the LGPL. If you do not delete
33
* the provisions above, a recipient may use your version of this file under
34
* the terms of any one of the MPL, the GPL or the LGPL.
35
*
36
* ***** END LICENSE BLOCK ***** */
37
38
39
#ifndef _GUAC_CLIENT_H
40
#define _GUAC_CLIENT_H
41
42
#include <stdarg.h>
43
44
#include "
socket.h
"
45
#include "
protocol.h
"
46
56
#define GUAC_PROTOCOL_LIBRARY_PREFIX "libguac-client-"
57
61
#define GUAC_PROTOCOL_LIBRARY_SUFFIX ".so"
62
67
#define GUAC_PROTOCOL_NAME_LIMIT 256
68
75
#define GUAC_PROTOCOL_LIBRARY_LIMIT ( \
76
\
77
sizeof(GUAC_PROTOCOL_LIBRARY_PREFIX) - 1
/* "libguac-client-" */
\
78
+ GUAC_PROTOCOL_NAME_LIMIT - 1
/* [up to 256 chars] */
\
79
+ sizeof(GUAC_PROTOCOL_LIBRARY_SUFFIX) - 1
/* ".so" */
\
80
+ 1
/* NULL terminator */
\
81
\
82
)
83
84
85
typedef
struct
guac_client
guac_client
;
86
typedef
struct
guac_client_plugin
guac_client_plugin
;
87
92
typedef
int
guac_client_handle_messages
(
guac_client
* client);
93
97
typedef
int
guac_client_mouse_handler
(
guac_client
* client,
int
x,
int
y,
int
button_mask);
98
102
typedef
int
guac_client_key_handler
(
guac_client
* client,
int
keysym,
int
pressed);
103
107
typedef
int
guac_client_clipboard_handler
(
guac_client
* client,
char
* copied);
108
113
typedef
int
guac_client_free_handler
(
guac_client
* client);
114
118
typedef
void
guac_client_log_handler
(
guac_client
* client,
const
char
* format, va_list
args
);
119
123
typedef
int
guac_client_init_handler
(
guac_client
* client,
int
argc,
char
** argv);
124
128
#define GUAC_CLIENT_MOUSE_LEFT 0x01
129
133
#define GUAC_CLIENT_MOUSE_MIDDLE 0x02
134
138
#define GUAC_CLIENT_MOUSE_RIGHT 0x04
139
147
#define GUAC_CLIENT_MOUSE_SCROLL_UP 0x08
148
156
#define GUAC_CLIENT_MOUSE_SCROLL_DOWN 0x10
157
164
#define GUAC_BUFFER_POOL_INITIAL_SIZE 1024
165
170
typedef
enum
guac_client_state
{
171
176
GUAC_CLIENT_RUNNING
,
177
182
GUAC_CLIENT_STOPPING
183
184
}
guac_client_state
;
185
191
struct
guac_client_plugin
{
192
196
void
* __client_plugin_handle;
197
202
guac_client_init_handler
*
init_handler
;
203
209
const
char
**
args
;
210
211
};
212
219
struct
guac_client
{
220
228
guac_socket
*
socket
;
229
236
guac_client_state
state
;
237
242
guac_timestamp
last_received_timestamp
;
243
248
guac_timestamp
last_sent_timestamp
;
249
255
void
*
data
;
256
271
guac_client_handle_messages
*
handle_messages
;
272
298
guac_client_mouse_handler
*
mouse_handler
;
299
316
guac_client_key_handler
*
key_handler
;
317
337
guac_client_clipboard_handler
*
clipboard_handler
;
338
360
guac_client_free_handler
*
free_handler
;
361
384
guac_client_log_handler
*
log_info_handler
;
385
386
409
guac_client_log_handler
*
log_error_handler
;
410
414
int
__next_buffer_index;
415
420
guac_layer
* __available_buffers;
421
425
guac_layer
* __last_available_buffer;
426
430
int
__next_layer_index;
431
436
guac_layer
* __available_layers;
437
441
guac_layer
* __last_available_layer;
442
447
guac_layer
* __all_layers;
448
449
};
450
460
guac_client_plugin
*
guac_client_plugin_open
(
const
char
* protocol);
461
470
int
guac_client_plugin_close
(
guac_client_plugin
* plugin);
471
486
guac_client
*
guac_client_plugin_get_client
(
guac_client_plugin
* plugin,
487
guac_socket
* socket,
int
argc,
char
** argv,
488
guac_client_log_handler
* log_info_handler,
489
guac_client_log_handler
* log_error_handler);
490
496
void
guac_client_free
(
guac_client
* client);
497
508
int
guac_client_handle_instruction
(
guac_client
* client,
guac_instruction
* instruction);
509
517
guac_layer
*
guac_client_alloc_buffer
(
guac_client
* client);
518
526
guac_layer
*
guac_client_alloc_layer
(
guac_client
* client);
527
535
void
guac_client_free_buffer
(
guac_client
* client,
guac_layer
* layer);
536
544
void
guac_client_free_layer
(
guac_client
* client,
guac_layer
* layer);
545
546
557
void
guac_client_log_info
(
guac_client
* client,
const
char
* format, ...);
558
569
void
guac_client_log_error
(
guac_client
* client,
const
char
* format, ...);
570
582
void
vguac_client_log_info
(
guac_client
* client,
const
char
* format, va_list ap);
583
595
void
vguac_client_log_error
(
guac_client
* client,
const
char
* format, va_list ap);
596
604
void
guac_client_stop
(
guac_client
* client);
605
609
extern
const
guac_layer
*
GUAC_DEFAULT_LAYER
;
610
611
#endif
Generated on Mon Oct 22 2012 12:07:20 for libguac by
1.8.1.2