skipstone/src/system.c

40 lines
1.3 KiB
C
Raw Normal View History

2017-11-26 16:22:00 -06:00
#include <stdio.h>
#include <skipstone/message.h>
#include <skipstone/system.h>
#include "util.h"
int skipstone_system_send_client_version(skipstone_message_service *service,
2017-11-29 21:42:01 -06:00
uint32_t flags) {
2017-11-26 16:22:00 -06:00
skipstone_message *message;
if ((message = skipstone_message_new()) == NULL) {
goto error_message_new;
}
2017-11-29 21:42:01 -06:00
skipstone_message_append_uint8( message, SKIPSTONE_SYSTEM_VERSION_RESPONSE);
2017-11-26 16:22:00 -06:00
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));
2017-11-29 21:56:36 -06:00
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));
2017-11-26 16:22:00 -06:00
if (skipstone_message_service_queue(service, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION) < 0) {
goto error_message_service_queue;
}
2017-11-26 16:41:42 -06:00
skipstone_message_destroy(message);
2017-11-26 16:22:00 -06:00
return 0;
error_message_service_queue:
skipstone_message_destroy(message);
error_message_new:
return -1;
}