ya2 · news · projects · code · about

removed unused code
[pmachines.git] / ya2 / engine / network / server.py
CommitLineData
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]])