skipstone/src/system.c
2017-11-29 21:56:36 -06:00

39 lines
1.3 KiB
C

#include <stdio.h>
#include <skipstone/message.h>
#include <skipstone/system.h>
#include "util.h"
int skipstone_system_send_client_version(skipstone_message_service *service,
uint32_t flags) {
skipstone_message *message;
if ((message = skipstone_message_new()) == NULL) {
goto error_message_new;
}
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_VERSION_RESPONSE);
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_PROTOCOL));
skipstone_message_append_uint32(message, htobe32(SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY));
skipstone_message_append_uint32(message, htobe32(flags));
skipstone_message_append_uint8( message, 2);
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_MAJOR);
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_MINOR);
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_CLIENT_BUGFIX);
skipstone_message_append_uint64(message, htobe64(SKIPSTONE_SYSTEM_PROTOCOL_CAPS));
if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) {
goto error_message_service_queue;
}
skipstone_message_destroy(message);
return 0;
error_message_service_queue:
skipstone_message_destroy(message);
error_message_new:
return -1;
}