From f431158ae2412ed23bd4d2336af00d2b5c170d31 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Tue, 16 Feb 2016 11:53:28 +0100 Subject: Initial commit --- uca-net-protocol.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 uca-net-protocol.h (limited to 'uca-net-protocol.h') diff --git a/uca-net-protocol.h b/uca-net-protocol.h new file mode 100644 index 0000000..3df8c37 --- /dev/null +++ b/uca-net-protocol.h @@ -0,0 +1,85 @@ +#ifndef PROTOCOL_H +#define PROTOCOL_H + +#include + +typedef enum { + UCA_NET_MESSAGE_GET_PROPERTY = 0, + UCA_NET_MESSAGE_SET_PROPERTY, + UCA_NET_MESSAGE_START_RECORDING, + UCA_NET_MESSAGE_STOP_RECORDING, + UCA_NET_MESSAGE_GRAB, + UCA_NET_MESSAGE_CLOSE_CONNECTION, +} UcaNetMessageType; + +typedef struct { + gboolean occurred; + gchar domain[64]; + gint code; + gchar message[512]; +} UcaNetErrorReply; + +typedef struct { + UcaNetMessageType type; + UcaNetErrorReply error; +} UcaNetDefaultReply; + +typedef struct { + UcaNetMessageType type; +} UcaNetMessageDefault; + +typedef struct { + UcaNetMessageType type; + gchar property_name[128]; +} UcaNetMessageGetPropertyRequest; + +typedef struct { + UcaNetMessageType type; + gchar property_value[128]; +} UcaNetMessageGetPropertyReply; + +typedef struct { + UcaNetMessageType type; + gchar property_name[128]; + gchar property_value[128]; +} UcaNetMessageSetPropertyRequest; + +typedef struct { + UcaNetMessageType type; + gsize size; +} UcaNetMessageGrabRequest; + + +typedef struct { + gpointer user_data; + + void (*get_property) (gpointer user_data, const gchar *name, gchar *value); + void (*set_property) (gpointer user_data, const gchar *name, const gchar *value, GError **error); + void (*start_recording) (gpointer user_data, GError **error); + void (*stop_recording) (gpointer user_data, GError **error); + gboolean (*grab) (gpointer data, gpointer user_data, GError **error); +} UcaNetHandlers; + +gboolean uca_net_client_get_property (GSocketConnection *connection, + const gchar *name, + GValue *value, + GError **error); +gboolean uca_net_client_set_property (GSocketConnection *connection, + const gchar *name, + const GValue *value, + GError **error); +void uca_net_client_start_recording (GSocketConnection *connection, + GError **error); +void uca_net_client_stop_recording (GSocketConnection *connection, + GError **error); +gboolean uca_net_client_grab (GSocketConnection *connection, + gpointer data, + gsize size, + GError **error); +gboolean uca_net_client_close (GSocketConnection *connection, + GError **error); + +void uca_net_server_register_handlers (UcaNetHandlers *handlers); +void uca_net_server_handle (GSocketConnection *connection); + +#endif -- cgit v1.2.3