This is starting to work out
This commit is contained in:
parent
8f94512524
commit
a2a54646a3
6 changed files with 40 additions and 16 deletions
|
@ -16,6 +16,9 @@ static int answer_phone_version_message(skipstone_message_service *service,
|
|||
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
printf("Sending %hu message to %hu in response to %hu message\n",
|
||||
sizeof(response), id, size);
|
||||
|
||||
skipstone_message_service_queue(service, &response, sizeof(response), id);
|
||||
|
||||
return 0;
|
||||
|
@ -37,6 +40,8 @@ int main(int argc, char **argv) {
|
|||
goto error_message_service_new;
|
||||
}
|
||||
|
||||
printf("Registering endpoint %p\n", answer_phone_version_message);
|
||||
|
||||
skipstone_message_service_register(service, 17, answer_phone_version_message, NULL);
|
||||
|
||||
skipstone_message_service_run(service, link);
|
||||
|
|
|
@ -16,6 +16,9 @@ static int answer_phone_version_message(skipstone_message_service *service,
|
|||
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
|
||||
};
|
||||
|
||||
printf("Sending %hu message to %hu in response to %hu message\n",
|
||||
sizeof(response), id, size);
|
||||
|
||||
skipstone_message_service_queue(service, &response, sizeof(response), id);
|
||||
|
||||
return 0;
|
||||
|
@ -37,6 +40,8 @@ int main(int argc, char **argv) {
|
|||
goto error_message_service_new;
|
||||
}
|
||||
|
||||
printf("Registering endpoint %p\n", answer_phone_version_message);
|
||||
|
||||
skipstone_message_service_register(service, 17, answer_phone_version_message, NULL);
|
||||
|
||||
skipstone_message_service_run(service, link);
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -80,8 +79,15 @@ int skipstone_message_service_queue(skipstone_message_service *service,
|
|||
|
||||
memcpy(message + 1, buf, size);
|
||||
|
||||
if (skipstone_queue_push(service->pending, message) < 0) {
|
||||
goto error_queue_push_pending;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error_queue_push_pending:
|
||||
free(message);
|
||||
|
||||
error_malloc_message:
|
||||
return -1;
|
||||
}
|
||||
|
@ -95,16 +101,16 @@ int skipstone_message_service_run(skipstone_message_service *service,
|
|||
}
|
||||
|
||||
while (1) {
|
||||
uint16_t size, id;
|
||||
skipstone_message_handler *handler;
|
||||
skipstone_message_header *message;
|
||||
struct endpoint *endpoint;
|
||||
uint16_t size, id;
|
||||
|
||||
if (skipstone_link_recv(link, buf, &size, &id) < 0) {
|
||||
goto error_io;
|
||||
}
|
||||
|
||||
if ((handler = skipstone_map_get(service->endpoints, id)) != NULL) {
|
||||
if (handler(service, buf, size, id) < 0) {
|
||||
if ((endpoint = skipstone_map_get(service->endpoints, id)) != NULL) {
|
||||
if (endpoint->handler(service, buf, size, id) < 0) {
|
||||
goto error_io;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -80,8 +79,15 @@ int skipstone_message_service_queue(skipstone_message_service *service,
|
|||
|
||||
memcpy(message + 1, buf, size);
|
||||
|
||||
if (skipstone_queue_push(service->pending, message) < 0) {
|
||||
goto error_queue_push_pending;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error_queue_push_pending:
|
||||
free(message);
|
||||
|
||||
error_malloc_message:
|
||||
return -1;
|
||||
}
|
||||
|
@ -95,16 +101,16 @@ int skipstone_message_service_run(skipstone_message_service *service,
|
|||
}
|
||||
|
||||
while (1) {
|
||||
uint16_t size, id;
|
||||
skipstone_message_handler *handler;
|
||||
skipstone_message_header *message;
|
||||
struct endpoint *endpoint;
|
||||
uint16_t size, id;
|
||||
|
||||
if (skipstone_link_recv(link, buf, &size, &id) < 0) {
|
||||
goto error_io;
|
||||
}
|
||||
|
||||
if ((handler = skipstone_map_get(service->endpoints, id)) != NULL) {
|
||||
if (handler(service, buf, size, id) < 0) {
|
||||
if ((endpoint = skipstone_map_get(service->endpoints, id)) != NULL) {
|
||||
if (endpoint->handler(service, buf, size, id) < 0) {
|
||||
goto error_io;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,7 @@ int skipstone_queue_push(skipstone_queue *queue, void *value) {
|
|||
}
|
||||
|
||||
queue->last = next;
|
||||
queue->count++;
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -71,13 +72,13 @@ error_malloc_next:
|
|||
int skipstone_queue_pop(skipstone_queue *queue, void **value) {
|
||||
struct entry *last = queue->last;
|
||||
|
||||
if (last == NULL) {
|
||||
if (queue->count == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*value = last->value;
|
||||
|
||||
*value = last->value;
|
||||
queue->last = last->prev;
|
||||
queue->count--;
|
||||
|
||||
free(last);
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ int skipstone_queue_push(skipstone_queue *queue, void *value) {
|
|||
}
|
||||
|
||||
queue->last = next;
|
||||
queue->count++;
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -71,13 +72,13 @@ error_malloc_next:
|
|||
int skipstone_queue_pop(skipstone_queue *queue, void **value) {
|
||||
struct entry *last = queue->last;
|
||||
|
||||
if (last == NULL) {
|
||||
if (queue->count == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*value = last->value;
|
||||
|
||||
*value = last->value;
|
||||
queue->last = last->prev;
|
||||
queue->count--;
|
||||
|
||||
free(last);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue