return i;
}
-static void handle_request_in_disconnected(struct request_client *client, char *buffer)
-{
- int nr_tokens;
- char *tokens[REQUEST_TOKEN_MAX];
- int request_type;
- char response[10];
- int response_len;
-
- nr_tokens = buffer_tokenize(buffer, tokens);
- if (nr_tokens < 0) {
- _E("error occurred while tokenizing");
- return;
- }
-
- request_type = atoi(tokens[0]);
-
- /* expect init call */
- if (request_type != REQUEST_INIT) {
- _E("state: %d Invalid request type: %s", client->state,
- request_type_str[request_type]);
- return;
- }
-
- /**
- * Format of REQUEST_INIT:
- * - <REQUEST_TYPE:PERIOD>
- */
- client->period = atoi(tokens[1]); // second token should be a period value
- _I("state: %d request_type: %s period: %d", client->state,
- request_type_str[request_type], client->period);
-
- /* send response */
- response_len = sprintf(response, "%d:%d", REQUEST_INIT, client->id);
- if (send(client->socket_fd, response, response_len, 0) < 0) {
- _E("failed to send response, error: %s", strerror(errno));
- return;
- }
- _I("send response \"%s\" to client-%d", response, client->id);
-
- client->state = CLIENT_CONNECTED;
-}
-
static void add_resource_to_list(struct request_resource *resource, GList **list)
{
if (!resource || !list)
request_type = atoi(tokens[0]);
id = atoi(tokens[1]);
- /* expect stop, update call */
+ /* expect stop, update, get_value calls */
if (request_type != REQUEST_STOP && request_type != REQUEST_UPDATE &&
request_type != REQUEST_GET_VALUE_INT) {
_E("state: %d Invalid request type: %s client-%d", client->state,
client->id, client->state, request_type_str[request_type]);
switch (request_type) {
+ case REQUEST_UPDATE:
+ case REQUEST_GET_VALUE_INT:
case REQUEST_STOP:
/**
* Format of REQUEST_EXIT:
node = node->next;
}
_I("fork worker thread for client-%d", client->id);
- //add_timer_handler(1000, request_handler_func, client);
+
create_worker_thread(&client->worker, request_handler_func, client);
client->worker_running = 1;
resume_thread(client->worker);
add_resource_to_client(client, resource_type, attr_mask);
_I("client-%d: resource %d - attr_mask %lx", client->id, resource_type, attr_mask);
break;
-
- case REQUEST_EXIT:
- /**
- * Format of REQUEST_EXIT:
- * - <REQUEST_TYPE:ID>
- */
- if (client->g_request_resource_head) {
- _I("client-%d: before release resource list", client->id);
- release_resource_list(&client->g_request_resource_head);
- _I("client-%d: release resource list", client->id);
- }
- client->state = CLIENT_DISCONNECTED;
-
- break;
}
/**
_I("send response \"%s\" to client-%d", response, client->id);
}
+static void handle_request_in_disconnected(struct request_client *client, char *buffer)
+{
+ int nr_tokens;
+ char *tokens[REQUEST_TOKEN_MAX];
+ int request_type;
+ char response[10];
+ int response_len;
+
+ nr_tokens = buffer_tokenize(buffer, tokens);
+ if (nr_tokens < 0) {
+ _E("error occurred while tokenizing");
+ return;
+ }
+
+ request_type = atoi(tokens[0]);
+
+ /* expect init call */
+ if (request_type != REQUEST_INIT) {
+ _E("state: %d Invalid request type: %s", client->state,
+ request_type_str[request_type]);
+ return;
+ }
+
+ /**
+ * Format of REQUEST_INIT:
+ * - <REQUEST_TYPE:PERIOD>
+ */
+ client->period = atoi(tokens[1]); // second token should be a period value
+ _I("state: %d request_type: %s period: %d", client->state,
+ request_type_str[request_type], client->period);
+
+ /* send response */
+ response_len = sprintf(response, "%d:%d", REQUEST_INIT, client->id);
+ if (send(client->socket_fd, response, response_len, 0) < 0) {
+ _E("failed to send response, error: %s", strerror(errno));
+ return;
+ }
+ _I("send response \"%s\" to client-%d", response, client->id);
+
+ client->state = CLIENT_CONNECTED;
+}
+
static void handle_request(struct request_client *client, char *buffer, fd_set *fds)
{
switch (client->state) {