1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
import Arcus
import time
import os.path
class Listener(Arcus.SocketListener):
def stateChanged(self, state):
print("Socket state changed:", state)
def messageReceived(self):
message = self.getSocket().takeNextMessage()
if message.getTypeName() == "Example.ProgressUpdate":
print("Progress:", message.amount)
if message.getTypeName() == "Example.SlicedObjectList":
print("Sliced Objects:", message.repeatedMessageCount("objects"))
for i in range(message.repeatedMessageCount("objects")):
obj = message.getRepeatedMessage("objects", i)
print(" Object ID:", obj.id)
print(" Polygon Count:", obj.repeatedMessageCount("polygons"))
def error(self, error):
print(error)
print("Creating socket")
socket = Arcus.Socket()
print("Registering message types")
path = os.path.dirname(os.path.abspath(__file__)).replace("\\", "/")
if not socket.registerAllMessageTypes(path + "/example.proto"):
print("Failed to register messages:", socket.getLastError())
print("Creating listener")
listener = Listener()
socket.addListener(listener)
print("Listening for connections on 127.0.0.1:56789")
socket.listen('127.0.0.1', 56789)
while(socket.getState() != Arcus.SocketState.Connected):
time.sleep(0.1)
#time.sleep(5) #Sleep for a bit so the other side can connect
if(socket.getState() == Arcus.SocketState.Connected):
print("Connection established")
else:
print(socket.getState())
print("Could not establish a connection:", socket.getLastError())
exit(1)
for i in range(10):
msg = socket.createMessage("Example.ObjectList")
for i in range(100):
obj = msg.addRepeatedMessage("objects")
obj.id = i
obj.vertices = b'abcdefghijklmnopqrstuvwxyz' * 10
obj.normals = b'abcdefghijklmnopqrstuvwxyz' * 10
obj.indices = b'abcdefghijklmnopqrstuvwxyz' * 10
print("Sending message containing", msg.repeatedMessageCount("objects"), "objects")
socket.sendMessage(msg)
time.sleep(1)
if socket.getState() != Arcus.SocketState.Connected:
print("Socket lost connection, aborting!")
break
time.sleep(5) #Sleep for a bit more so we can receive replies to what we just sent.
print("Closing connection")
socket.close()
|