No luck with an answer yet, so I look for a work-around myself. Extend the communication protocol with a connection-test and connect-confirm network events
Code:
import viz
import viznet
CONN_TEST = viznet.id("connTest")
CONN_CONF = viznet.id("connConf")
myName = viz.net.getName()
and, for testing reasons, just try to confirm a connection between MASTER and HEAD1, running the same script on each machine:
Code:
if myName == 'HEAD1':
doClient()
else:
doServer()
viz.go()
with the server part:
Code:
def srvrConnectTest(e):
viznet.server.sendClient(e.client, CONN_CONF, server=myName)
print 'connect confirmation sent'
def doServer():
viznet.server.start()
viz.callback(CONN_TEST, srvrConnectTest)
and the client code being:
Code:
import threading
_TIMEOUT = 3.0
_myServer = None
_confirmEvent = threading.Event()
def clntConnectConfirm(e):
_myServer = e.server
print 'received confirmation from', e.server
_confirmEvent.set()
def doClient():
_lookfor = 'MASTER'
if not viznet.client.connect(_lookfor):
print _lookfor, 'does not run'
else:
viz.callback(CONN_CONF, clntConnectConfirm)
print 'asking for connection confirmation...'
viznet.client.send(CONN_TEST, client=myName)
_confirmEvent.clear()
_confirmEvent.wait(_TIMEOUT)
print 'the server's name is', _myServer
but this does not work as it seems that the event queue is only worked upon when the script is completed: the wait time on the Event is always used up, the server replies immediately and the client does only react on the event in the very end. (relevant) Output on the client is:
Code:
asking for connection confirmation...
the server's name is None
received confirmation from MASTER
Any idea what I have to do to get the information in time, when I need it, and not ages later??
Thanks,
Best Regards,
Walter