1 | #ifndef __NETDRV_HPP_ |
---|
2 | #define __NETDRV_HPP_ |
---|
3 | |
---|
4 | #error hi |
---|
5 | #include "netface.hpp" |
---|
6 | #include <unistd.h> |
---|
7 | #include "undrv.hpp" |
---|
8 | // these are the names of the fifos to create in tmp |
---|
9 | // that communitcate with the engine |
---|
10 | |
---|
11 | #define DIN_NAME "/tmp/.abuse_ndrv_in" |
---|
12 | #define DOUT_NAME "/tmp/.abuse_ndrv_out" |
---|
13 | |
---|
14 | // the lock files is used in case a previous net driver is already running |
---|
15 | |
---|
16 | #define DLOCK_NAME "/tmp/.abuse_ndrv_lock" |
---|
17 | #include "sock.hpp" |
---|
18 | |
---|
19 | |
---|
20 | class game_handler; |
---|
21 | |
---|
22 | class net_driver |
---|
23 | { |
---|
24 | net_socket *in,*out; |
---|
25 | int shm_seg_id; |
---|
26 | void *shm_addr; |
---|
27 | |
---|
28 | int connect_to_engine(int argc, char **argv); |
---|
29 | int setup_shm(); |
---|
30 | game_handler *game_face; |
---|
31 | int join_server(char *server_name); |
---|
32 | net_protocol *proto; |
---|
33 | int comm_port, game_port; |
---|
34 | join_struct *join_array; |
---|
35 | int debug; |
---|
36 | int reg; |
---|
37 | |
---|
38 | class lsf_waiter |
---|
39 | { |
---|
40 | public : |
---|
41 | net_socket *sock; |
---|
42 | lsf_waiter *next; |
---|
43 | lsf_waiter(net_socket *sock, lsf_waiter *next) : sock(sock), next(next) |
---|
44 | { |
---|
45 | sock->read_selectable(); // set in case socket dies |
---|
46 | } ; |
---|
47 | ~lsf_waiter() |
---|
48 | { |
---|
49 | sock->read_unselectable(); |
---|
50 | delete sock; |
---|
51 | } |
---|
52 | } *lsf_wait_list; |
---|
53 | |
---|
54 | |
---|
55 | class crc_waiter |
---|
56 | { |
---|
57 | public : |
---|
58 | net_socket *sock; |
---|
59 | crc_waiter *next; |
---|
60 | crc_waiter(net_socket *sock, crc_waiter *next) : sock(sock), next(next) |
---|
61 | { |
---|
62 | sock->read_selectable(); // set in case socket dies |
---|
63 | } ; |
---|
64 | ~crc_waiter() |
---|
65 | { |
---|
66 | sock->read_unselectable(); |
---|
67 | delete sock; |
---|
68 | } |
---|
69 | } *crc_wait_list; |
---|
70 | |
---|
71 | int fetch_crcs(char *server); |
---|
72 | int get_lsf(char *name); // contact remot host and ask for lisp startup file filename |
---|
73 | |
---|
74 | public : |
---|
75 | base_memory_struct *base; |
---|
76 | |
---|
77 | void cleanup(); |
---|
78 | int registered() { return reg; } |
---|
79 | net_driver(int argc, char **argv, int comm_port, int game_port, net_protocol *proto); |
---|
80 | int check_commands(); |
---|
81 | int add_client(int type, net_socket *sock, net_address *from); |
---|
82 | int add_joiner(int client_id, char *name); |
---|
83 | net_socket *connect_to_server(char *&name, |
---|
84 | int port=DEFAULT_COMM_PORT, |
---|
85 | int force_port=0, |
---|
86 | net_socket::socket_type sock_type=net_socket::SOCKET_SECURE); |
---|
87 | net_protocol *get_protocol() { return proto; } |
---|
88 | int become_server(); |
---|
89 | int get_game_port() { return game_port; } |
---|
90 | ~net_driver(); |
---|
91 | } ; |
---|
92 | |
---|
93 | extern net_driver *driver; |
---|
94 | void mdie(char *reason); |
---|
95 | |
---|
96 | #endif |
---|
97 | |
---|