
#ifndef __SERVER_H__
#define __SERVER_H__

#include <stdbool.h>
#include <stdint.h>
#include "proto2.h"
#include "areas.h"
#include "config.h"

#include <oslib/socket.h>

#define IYONIX_SOCKET_ERR               (0x20e00)

typedef struct vnc_client_s vnc_client_t;

extern vnc_client_t *server_create(socket_s socket, const server_config_t *config);
extern void server_close(vnc_client_t *client);
extern void server_update(vnc_client_t *client);
extern bool server_has_fatal_error_occurred(vnc_client_t *client);

extern void server_release_key(vnc_client_t *client, int key);
extern void server_checkmode(vnc_client_t *client);
extern void server_set_cursor(vnc_client_t *client, const pointer_shape *shape);
extern void server_status(vnc_client_t *client);
extern void server_framebuffer_changed(vnc_client_t *client, const area *a, bool unlikely);

#endif
