Commit | Line | Data |
---|---|---|
cb700bcc FC |
1 | # from socket import error |
2 | # from queue import Queue | |
3 | # from ya2.engine.network.network import AbsNetwork, NetworkThread, \ | |
4 | # msg_rpc_answ | |
5 | # from ya2.engine.network.binary import BinaryData | |
6 | # from ya2.gameobject import GameObject | |
7 | ||
8 | ||
9 | # class ServerThread(NetworkThread, GameObject): | |
10 | ||
11 | # def __init__(self, eng, rpc_cb, port): | |
12 | # NetworkThread.__init__(self, eng, port) | |
13 | # GameObject.__init__(self) | |
14 | # self.rpc_cb = rpc_cb | |
15 | # self.conn2msgs = {} | |
16 | ||
17 | # def _configure_socket(self): | |
18 | # self.tcp_sock.setblocking(0) | |
19 | # self.tcp_sock.bind(('', self.port)) | |
20 | # self.tcp_sock.listen(1) | |
21 | ||
22 | # def _process_read(self, sock): | |
23 | # if sock is self.tcp_sock: | |
24 | # conn, addr = sock.accept() | |
25 | # conn.setblocking(1) # required on osx | |
26 | # self.connections += [conn] | |
27 | # self.conn2msgs[conn] = Queue() | |
28 | # self.notify('on_connected', conn) | |
29 | # else: | |
30 | # NetworkThread._process_read(self, sock) | |
31 | ||
32 | # def _rpc_cb(self, funcname, args, kwargs, sock): | |
33 | # self.eng.cb_mux.add_cb(self.rpc_cb, [funcname, args, kwargs, sock]) | |
34 | ||
35 | # def _queue(self, sock): | |
36 | # return self.conn2msgs[sock] | |
37 | ||
38 | # def send_msg(self, conn, msg): | |
39 | # self.conn2msgs[conn].put(msg) | |
40 | ||
41 | ||
42 | # class Server(AbsNetwork): | |
43 | ||
44 | # def __init__(self, port): | |
45 | # AbsNetwork.__init__(self, port) | |
46 | # self.conn_cb = None | |
47 | # self.fname2ref = {} | |
48 | ||
49 | # @property | |
50 | # def connections(self): return self.netw_thr.connections[1:] | |
51 | ||
52 | # def start(self, read_cb, conn_cb): | |
53 | # #TODO: parameters differ from overridden start | |
54 | # AbsNetwork.start(self, read_cb) | |
55 | # self.conn_cb = conn_cb | |
56 | # self.netw_thr.attach(self.on_connected) | |
57 | # self.netw_thr.attach(self.on_disconnected) | |
58 | ||
59 | # def on_connected(self, conn): | |
60 | # self.notify('on_connected', conn) | |
61 | ||
62 | # def on_disconnected(self, conn): | |
63 | # self.notify('on_disconnected', conn) | |
64 | ||
65 | # def _bld_netw_thr(self): | |
66 | # return ServerThread(self.eng, self.rpc_cb, self.port) | |
67 | ||
68 | # def _configure_udp(self): self.udp_sock.bind(('', self.port)) | |
69 | ||
70 | # def send(self, data_lst, receiver=None): | |
71 | # receivers = [cln for cln in self.connections if cln == receiver] | |
72 | # dests = receivers if receiver else self.connections | |
73 | # dgram = BinaryData.pack(data_lst) | |
74 | # list(map(lambda cln: self.netw_thr.send_msg(cln, dgram), dests)) | |
75 | ||
76 | # def rpc_cb(self, funcname, args, kwargs, conn): | |
77 | # kwargs = kwargs or {} | |
78 | # kwargs['sender'] = conn | |
79 | # ret = self.fname2ref[funcname](*args, **kwargs) | |
80 | # msg_size, msg_data = BinaryData.pack([msg_rpc_answ, ret]) | |
81 | # self.netw_thr.send_msg(conn, (msg_size, msg_data)) | |
82 | ||
83 | # def register_rpc(self, func): self.fname2ref[func.__name__] = func | |
84 | ||
85 | # def unregister_rpc(self, func): del self.fname2ref[func.__name__] | |
86 | ||
87 | # def on_udp_pck(self, dgram, conn): | |
88 | # sender = BinaryData.unpack(dgram)[0] | |
89 | # if sender not in self.addr2conn: self.addr2conn[sender] = conn | |
90 | ||
91 | # def process_udp(self): | |
92 | # try: dgram, conn = self.udp_sock.recvfrom(8192) | |
93 | # except error: return | |
94 | # try: | |
95 | # dgram = BinaryData.unpack(dgram) | |
96 | # sender, payload = dgram[0], dgram[1:] | |
97 | # self.read_cb(payload, sender) | |
98 | # except IndexError as exc: print(exc) | |
99 | ||
100 | # def send_udp(self, data_lst, receiver): | |
101 | # if receiver[0] not in self.addr2conn: return | |
102 | # msg_size, msg_data = BinaryData.pack(['server'] + data_lst) | |
103 | # self.udp_sock.sendto(msg_data, self.addr2conn[receiver[0]]) |