summaryrefslogtreecommitdiff
path: root/test_server.py
diff options
context:
space:
mode:
authorChristoph Egger <christoph@debian.org>2017-05-28 14:30:29 +0200
committerChristoph Egger <christoph@debian.org>2017-05-28 14:30:29 +0200
commit9f30a9497bb1e812acfdf1c98e3b5cf35ddd8e39 (patch)
tree1c84647324d5e1ddf43a46b9e3630849ddd9b334 /test_server.py
parent122bb8ba0b15478112fec10ebb3c0abf546d7fee (diff)
New upstream version 0.0~vcs.2017.05.26.git
Diffstat (limited to 'test_server.py')
-rw-r--r--test_server.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/test_server.py b/test_server.py
new file mode 100644
index 0000000..fbeee2a
--- /dev/null
+++ b/test_server.py
@@ -0,0 +1,64 @@
+import enet
+
+SHUTDOWN_MSG = "SHUTDOWN"
+
+host = enet.Host(enet.Address(b"localhost", 54301), 10, 0, 0, 0)
+
+connect_count = 0
+run = True
+shutdown_recv = False
+while run:
+ # Wait 1 second for an event
+ event = host.service(1000)
+ if event.type == enet.EVENT_TYPE_CONNECT:
+ print("%s: CONNECT" % event.peer.address)
+ connect_count += 1
+ elif event.type == enet.EVENT_TYPE_DISCONNECT:
+ print("%s: DISCONNECT" % event.peer.address)
+ connect_count -= 1
+ if connect_count <= 0 and shutdown_recv:
+ run = False
+ elif event.type == enet.EVENT_TYPE_RECEIVE:
+ print("%s: IN: %r" % (event.peer.address, event.packet.data))
+ msg = event.packet.data
+ if event.peer.send(0, enet.Packet(msg)) < 0:
+ print("%s: Error sending echo packet!" % event.peer.address)
+ else:
+ print("%s: OUT: %r" % (event.peer.address, msg))
+ if event.packet.data == b"SHUTDOWN":
+ shutdown_recv = True
+
+# Part of the test to do with intercept callback and socket.send
+
+connect_count = 0
+run = True
+shutdown_recv = False
+
+def receive_callback(address, data):
+ if data and data == b"\xff\xff\xff\xffgetstatus\x00":
+ host.socket.send(address, b"\xff\xff\xff\xffstatusResponse\n")
+
+host.intercept = receive_callback
+
+while run:
+ # Wait 1 second for an event
+ event = host.service(1000)
+ if event.type == enet.EVENT_TYPE_CONNECT:
+ print("%s: CONNECT" % event.peer.address)
+ connect_count += 1
+ elif event.type == enet.EVENT_TYPE_DISCONNECT:
+ print("%s: DISCONNECT" % event.peer.address)
+ connect_count -= 1
+ if connect_count <= 0 and shutdown_recv:
+ run = False
+ elif event.type == enet.EVENT_TYPE_RECEIVE:
+ print("%s: IN: %r" % (event.peer.address, event.packet.data))
+
+ # This packet echo is used to mimick the usual use case when packets are going back&forth while the intercept callback is used
+ msg = event.packet.data
+ if event.peer.send(0, enet.Packet(msg)) < 0:
+ print("%s: Error sending echo packet!" % event.peer.address)
+ else:
+ print("%s: OUT: %r" % (event.peer.address, msg))
+ if event.packet.data == b"SHUTDOWN":
+ shutdown_recv = True