summaryrefslogtreecommitdiffstats
path: root/uca-net-server.c
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@kit.edu>2016-02-16 15:55:06 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@kit.edu>2016-02-16 15:55:06 +0100
commit7b18a105db637d1ea625bd41f35e52df41165fa3 (patch)
tree7be5d2e74c5e0aa2bda5c96606ebcaacb11c2715 /uca-net-server.c
parentbadc0cac8bd6c1997ac89b05bfe51976fe81d60a (diff)
downloaduca-net-7b18a105db637d1ea625bd41f35e52df41165fa3.tar.gz
uca-net-7b18a105db637d1ea625bd41f35e52df41165fa3.tar.bz2
uca-net-7b18a105db637d1ea625bd41f35e52df41165fa3.tar.xz
uca-net-7b18a105db637d1ea625bd41f35e52df41165fa3.zip
Add readout and trigger API
Diffstat (limited to 'uca-net-server.c')
-rw-r--r--uca-net-server.c45
1 files changed, 37 insertions, 8 deletions
diff --git a/uca-net-server.c b/uca-net-server.c
index f038cd6..853319c 100644
--- a/uca-net-server.c
+++ b/uca-net-server.c
@@ -51,25 +51,45 @@ uca_net_server_handle_set_property (GOutputStream *output, UcaNetMessageSetPrope
}
static void
-uca_net_server_handle_start_recording (GOutputStream *output, GError **stream_error)
+handle_default (GOutputStream *output, UcaNetMessageType type,
+ void (*handler) (gpointer user_data, GError **error), GError **stream_error)
{
- UcaNetDefaultReply reply = { .type = UCA_NET_MESSAGE_START_RECORDING };
+ UcaNetDefaultReply reply = { .type = type };
GError *error = NULL;
- handlers.start_recording (handlers.user_data, &error);
+ handler (handlers.user_data, &error);
prepare_error_reply (error, &reply.error);
send_reply (output, &reply, sizeof (reply), stream_error);
}
static void
+uca_net_server_handle_start_recording (GOutputStream *output, GError **stream_error)
+{
+ handle_default (output, UCA_NET_MESSAGE_START_RECORDING, handlers.start_recording, stream_error);
+}
+
+static void
uca_net_server_handle_stop_recording (GOutputStream *output, GError **stream_error)
{
- UcaNetDefaultReply reply = { .type = UCA_NET_MESSAGE_STOP_RECORDING };
- GError *error = NULL;
+ handle_default (output, UCA_NET_MESSAGE_STOP_RECORDING, handlers.start_recording, stream_error);
+}
- handlers.stop_recording (handlers.user_data, &error);
- prepare_error_reply (error, &reply.error);
- send_reply (output, &reply, sizeof (reply), stream_error);
+static void
+uca_net_server_handle_start_readout (GOutputStream *output, GError **stream_error)
+{
+ handle_default (output, UCA_NET_MESSAGE_START_READOUT, handlers.start_readout, stream_error);
+}
+
+static void
+uca_net_server_handle_stop_readout (GOutputStream *output, GError **stream_error)
+{
+ handle_default (output, UCA_NET_MESSAGE_STOP_READOUT, handlers.stop_readout, stream_error);
+}
+
+static void
+uca_net_server_handle_trigger (GOutputStream *output, GError **stream_error)
+{
+ handle_default (output, UCA_NET_MESSAGE_TRIGGER, handlers.trigger, stream_error);
}
static void
@@ -153,6 +173,15 @@ uca_net_server_handle (GSocketConnection *connection)
case UCA_NET_MESSAGE_STOP_RECORDING:
uca_net_server_handle_stop_recording (output, &error);
break;
+ case UCA_NET_MESSAGE_START_READOUT:
+ uca_net_server_handle_start_readout (output, &error);
+ break;
+ case UCA_NET_MESSAGE_STOP_READOUT:
+ uca_net_server_handle_stop_readout (output, &error);
+ break;
+ case UCA_NET_MESSAGE_TRIGGER:
+ uca_net_server_handle_trigger (output, &error);
+ break;
case UCA_NET_MESSAGE_GRAB:
uca_net_server_handle_grab (output, (UcaNetMessageGrabRequest *) buffer, &error);
break;