libguac
0.9.2
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
guacamole
socket.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2013 Glyptodon LLC
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a copy
5
* of this software and associated documentation files (the "Software"), to deal
6
* in the Software without restriction, including without limitation the rights
7
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
* copies of the Software, and to permit persons to whom the Software is
9
* furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included in
12
* all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
* THE SOFTWARE.
21
*/
22
23
#ifndef _GUAC_SOCKET_H
24
#define _GUAC_SOCKET_H
25
32
#include "
socket-constants.h
"
33
#include "
socket-fntypes.h
"
34
#include "
socket-types.h
"
35
#include "
timestamp-types.h
"
36
37
#include <pthread.h>
38
#include <stdint.h>
39
#include <unistd.h>
40
41
struct
guac_socket
{
42
46
void
*
data
;
47
51
guac_socket_read_handler
*
read_handler
;
52
58
guac_socket_write_handler
*
write_handler
;
59
64
guac_socket_select_handler
*
select_handler
;
65
69
guac_socket_free_handler
*
free_handler
;
70
74
guac_socket_state
state
;
75
80
guac_timestamp
last_write_timestamp
;
81
85
int
__ready;
86
91
int
__ready_buf[3];
92
96
int
__written;
97
102
char
__out_buf[
GUAC_SOCKET_OUTPUT_BUFFER_SIZE
];
103
108
char
* __instructionbuf_unparsed_start;
109
113
char
* __instructionbuf_unparsed_end;
114
120
char
__instructionbuf[32768];
121
126
int
__threadsafe_instructions;
127
132
pthread_mutex_t __instruction_write_lock;
133
137
pthread_mutex_t __buffer_lock;
138
142
int
__keep_alive_enabled;
143
147
pthread_t __keep_alive_thread;
148
149
};
150
158
guac_socket
*
guac_socket_alloc
();
159
165
void
guac_socket_free
(
guac_socket
* socket);
166
176
void
guac_socket_require_threadsafe
(
guac_socket
* socket);
177
187
void
guac_socket_require_keep_alive
(
guac_socket
* socket);
188
196
void
guac_socket_instruction_begin
(
guac_socket
* socket);
197
204
void
guac_socket_instruction_end
(
guac_socket
* socket);
205
213
void
guac_socket_update_buffer_begin
(
guac_socket
* socket);
214
222
void
guac_socket_update_buffer_end
(
guac_socket
* socket);
223
236
guac_socket
*
guac_socket_open
(
int
fd);
237
252
guac_socket
*
guac_socket_nest
(
guac_socket
* parent,
int
index);
253
266
ssize_t
guac_socket_write_int
(
guac_socket
* socket, int64_t i);
267
282
ssize_t
guac_socket_write_string
(
guac_socket
* socket,
const
char
* str);
283
300
ssize_t
guac_socket_write_base64
(
guac_socket
* socket,
const
void
* buf,
size_t
count);
301
314
ssize_t
guac_socket_write
(
guac_socket
* socket,
const
void
* buf,
size_t
count);
315
329
ssize_t
guac_socket_read
(
guac_socket
* socket,
void
* buf,
size_t
count);
330
340
ssize_t
guac_socket_flush_base64
(
guac_socket
* socket);
341
351
ssize_t
guac_socket_flush
(
guac_socket
* socket);
352
369
int
guac_socket_select
(
guac_socket
* socket,
int
usec_timeout);
370
371
#endif
372
Generated on Mon Jul 21 2014 14:14:14 for libguac by
1.8.1.2