#include "server.h"
#include "target.h"
+#include "openocd.h"
#include <signal.h>
#endif
-service_t *services = NULL;
+struct service *services = NULL;
/* shutdown_openocd == 1: exit the main event loop, and quit the debugger */
static int shutdown_openocd = 0;
/* set when using pipes rather than tcp */
int server_use_pipes = 0;
-int add_connection(service_t *service, command_context_t *cmd_ctx)
+int add_connection(struct service *service, struct command_context *cmd_ctx)
{
socklen_t address_size;
- connection_t *c, **p;
+ struct connection *c, **p;
int retval;
int flag = 1;
- c = malloc(sizeof(connection_t));
+ c = malloc(sizeof(struct connection));
c->fd = -1;
memset(&c->sin, 0, sizeof(c->sin));
c->cmd_ctx = copy_command_context(cmd_ctx);
return ERROR_OK;
}
-int remove_connection(service_t *service, connection_t *connection)
+int remove_connection(struct service *service, struct connection *connection)
{
- connection_t **p = &service->connections;
- connection_t *c;
+ struct connection **p = &service->connections;
+ struct connection *c;
/* find connection */
while ((c = *p))
int add_service(char *name, enum connection_type type, unsigned short port, int max_connections, new_connection_handler_t new_connection_handler, input_handler_t input_handler, connection_closed_handler_t connection_closed_handler, void *priv)
{
- service_t *c, **p;
+ struct service *c, **p;
int so_reuseaddr_option = 1;
- c = malloc(sizeof(service_t));
+ c = malloc(sizeof(struct service));
c->name = strdup(name);
c->type = type;
int remove_service(unsigned short port)
{
- service_t **p = &services;
- service_t *c;
+ struct service **p = &services;
+ struct service *c;
/* find service */
while ((c = *p))
int remove_services(void)
{
- service_t *c = services;
+ struct service *c = services;
/* loop service */
while (c)
{
- service_t *next = c->next;
+ struct service *next = c->next;
if (c->name)
free(c->name);
return ERROR_OK;
}
-extern void openocd_sleep_prelude(void);
-extern void openocd_sleep_postlude(void);
-
-int server_loop(command_context_t *command_context)
+int server_loop(struct command_context *command_context)
{
- service_t *service;
+ struct service *service;
/* used in select() */
fd_set read_fds;
while (!shutdown_openocd)
{
- /* monitor sockets for acitvity */
+ /* monitor sockets for activity */
fd_max = 0;
FD_ZERO(&read_fds);
if (service->connections)
{
- connection_t *c;
+ struct connection *c;
for (c = service->connections; c; c = c->next)
{
/* handle activity on connections */
if (service->connections)
{
- connection_t *c;
+ struct connection *c;
for (c = service->connections; c;)
{
{
if ((retval = service->input(c)) != ERROR_OK)
{
- connection_t *next = c->next;
+ struct connection *next = c->next;
if (service->type == CONNECTION_PIPE)
{
/* if connection uses a pipe then shutdown openocd on error */
return ERROR_COMMAND_CLOSE_CONNECTION;
}
-int server_register_commands(command_context_t *context)
+static const struct command_registration server_command_handlers[] = {
+ {
+ .name = "shutdown",
+ .handler = &handle_shutdown_command,
+ .mode = COMMAND_ANY,
+ .help = "shut the server down",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
+int server_register_commands(struct command_context *cmd_ctx)
{
- register_command(context, NULL, "shutdown",
- handle_shutdown_command, COMMAND_ANY,
- "shut the server down");
-
- return ERROR_OK;
+ return register_commands(cmd_ctx, NULL, server_command_handlers);
}
-
SERVER_PORT_COMMAND()
{
- switch (argc) {
+ switch (CMD_ARGC) {
case 0:
- command_print(cmd_ctx, "%d", *out);
+ command_print(CMD_CTX, "%d", *out);
break;
case 1:
{
uint16_t port;
- COMMAND_PARSE_NUMBER(u16, args[0], port);
+ COMMAND_PARSE_NUMBER(u16, CMD_ARGV[0], port);
*out = port;
break;
}