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_CLIENT_TYPES_H
21 #define _GUAC_CLIENT_TYPES_H
22 
23 /**
24  * Type definitions related to the Guacamole client structure, guac_client.
25  *
26  * @file client-types.h
27  */
28 
29 /**
30  * Guacamole proxy client.
31  *
32  * Represents a Guacamole proxy client (the client which communicates to
33  * a server on behalf of Guacamole, on behalf of the web-client).
34  */
35 typedef struct guac_client guac_client;
36 
37 /**
38  * Possible current states of the Guacamole client. Currently, the only
39  * two states are GUAC_CLIENT_RUNNING and GUAC_CLIENT_STOPPING.
40  */
41 typedef enum guac_client_state {
42 
43     /**
44      * The state of the client from when it has been allocated by the main
45      * daemon until it is killed or disconnected.
46      */
47     GUAC_CLIENT_RUNNING,
48 
49     /**
50      * The state of the client when a stop has been requested, signalling the
51      * I/O threads to shutdown.
52      */
53     GUAC_CLIENT_STOPPING
54 
55 } guac_client_state;
56 
57 /**
58  * All supported log levels used by the logging subsystem of each Guacamole
59  * client. With the exception of GUAC_LOG_TRACE, these log levels correspond to
60  * a subset of the log levels defined by RFC 5424.
61  */
62 typedef enum guac_client_log_level {
63 
64     /**
65      * Fatal errors.
66      */
67     GUAC_LOG_ERROR = 3,
68 
69     /**
70      * Non-fatal conditions that indicate problems.
71      */
72     GUAC_LOG_WARNING = 4,
73 
74     /**
75      * Informational messages of general interest to users or administrators.
76      */
77     GUAC_LOG_INFO = 6,
78 
79     /**
80      * Informational messages which can be useful for debugging, but are
81      * otherwise not useful to users or administrators. It is expected that
82      * debug level messages, while verbose, will not negatively affect
83      * performance.
84      */
85     GUAC_LOG_DEBUG = 7,
86 
87     /**
88      * Informational messages which can be useful for debugging, like
89      * GUAC_LOG_DEBUG, but which are so low-level that they may affect
90      * performance.
91      */
92     GUAC_LOG_TRACE = 8
93 
94 } guac_client_log_level;
95 
96 #endif
97 
98