// engine.c is the what comminicates with the abuse engine #ifndef __ENGINE_HPP_ #define __ENGINE_HPP_ #include "../inc/netface.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEFAULT_COMM_PORT 20202 #define DEFAULT_GAME_PORT 20203 #define MAX_JOINERS 32 // maximum clients that can join at the same time extern int no_security; extern int driver_out_fd,driver_in_fd; struct base_memory_struct; extern base_memory_struct *base; extern fd_set master_set; // list of sockets to block for extern fd_set master_write_set; // set a socket here if you detect a write_full void comm_failed(); // call if problems talking to engine void mdie(char *reason); // call if general net problems #define real2shm(type,ptr) (ptr==NULL ? NULL : ((type *)((char *)(ptr)-(char *)base))) #define shm2real(type,ptr) (ptr==NULL ? NULL : ((type *)((long)(ptr)+(long)(base)))) class client { public : int socket_fd; int data_fd; int client_id; // index into client_struct int has_joined; int wait_reload; int wait_input; int delete_me; struct sockaddr_in data_address; // where to send game data client *next; client(int sock, int id, client *Next) { data_fd=-1; socket_fd=sock; client_id=id; next=Next; has_joined=0; delete_me=0; wait_reload=0; wait_input=1; FD_SET(socket_fd,&master_set); // set in case socket dies } ~client() { close(socket_fd); FD_CLR(socket_fd,&master_set); if (data_fd>0) close(data_fd); } ; } ; extern client *first_client; // list of clients int connect_to_server(char *&server_name, int def_port=DEFAULT_COMM_PORT, int stream_type=SOCK_STREAM, int force_port=0); // -1 on failure #endif