Add ability to specify ports per server

This commit is contained in:
Mark Mine 2006-07-25 19:15:53 +00:00
parent f9ddc872be
commit 35bf064c9e
4 changed files with 57 additions and 344 deletions

View File

@ -17,32 +17,32 @@ class ClusterClient(DirectObject.DirectObject):
self.__name__ = 'cluster' self.__name__ = 'cluster'
# First start up servers using direct daemon # First start up servers using direct daemon
# What is the name of the client machine? # What is the name of the client machine?
clusterDaemonClient = base.config.GetString( clusterClientDaemonHost = base.config.GetString(
'cluster-daemon-client', 'None') 'cluster-client-daemon', 'None')
if clusterDaemonClient == 'None': if clusterClientDaemonHost == 'None':
clusterDaemonClient = os.popen('uname -n').read() clusterClientDaemonHost = os.popen('uname -n').read()
clusterDaemonClient = clusterDaemonClient.replace('\n', '') clusterClientDaemonHost = clusterClientDaemonHost.replace('\n', '')
# What daemon port are we using to communicate between client/servers # What daemon port are we using to communicate between client/servers
clusterDaemonPort = base.config.GetInt( clusterClientDaemonPort = base.config.GetInt(
'cluster-daemon-port', CLUSTER_DAEMON_PORT) 'cluster-client-daemon-port', CLUSTER_DAEMON_PORT)
# Create a daemon # Create a daemon
self.daemon = DirectD() self.daemon = DirectD()
# Start listening for the response # Start listening for the response
self.daemon.listenTo(clusterDaemonPort) self.daemon.listenTo(clusterClientDaemonPort)
# Contact server daemons and start up remote server application # Contact server daemons and start up remote server application
for serverConfig in configList: for serverConfig in configList:
# First kill existing application # First kill existing application
self.daemon.tellServer(serverConfig.serverName, self.daemon.tellServer(serverConfig.serverName,
clusterDaemonPort, serverConfig.serverDaemonPort,
'ka') 'ka')
# Now start up new application # Now start up new application
serverCommand = (SERVER_STARTUP_STRING % serverCommand = (SERVER_STARTUP_STRING %
(serverConfig.serverPort, (serverConfig.serverMsgPort,
clusterSyncFlag, clusterSyncFlag,
clusterDaemonClient, clusterClientDaemonHost,
clusterDaemonPort)) clusterClientDaemonPort))
self.daemon.tellServer(serverConfig.serverName, self.daemon.tellServer(serverConfig.serverName,
clusterDaemonPort, serverConfig.serverDaemonPort,
serverCommand) serverCommand)
print 'Begin waitForServers' print 'Begin waitForServers'
if not self.daemon.waitForServers(len(configList)): if not self.daemon.waitForServers(len(configList)):
@ -52,13 +52,14 @@ class ClusterClient(DirectObject.DirectObject):
self.serverList = [] self.serverList = []
self.msgHandler = ClusterMsgHandler(ClusterClient.MGR_NUM, self.notify) self.msgHandler = ClusterMsgHandler(ClusterClient.MGR_NUM, self.notify)
for serverConfig in configList: for serverConfig in configList:
server = DisplayConnection(self.qcm, serverConfig.serverName, server = DisplayConnection(
serverConfig.serverPort, self.msgHandler) self.qcm, serverConfig.serverName,
serverConfig.serverMsgPort, self.msgHandler)
if server == None: if server == None:
self.notify.error('Could not open %s on %s port %d' % self.notify.error('Could not open %s on %s port %d' %
(serverConfig.serverConfigName, (serverConfig.serverConfigName,
serverConfig.serverName, serverConfig.serverName,
serverConfig.serverPort)) serverConfig.serverMsgPort))
else: else:
self.notify.debug('send cam pos') self.notify.debug('send cam pos')
#server.sendMoveCam(Point3(0), Vec3(0)) #server.sendMoveCam(Point3(0), Vec3(0))
@ -300,10 +301,12 @@ class DisplayConnection:
self.cw.send(datagram, self.tcpConn) self.cw.send(datagram, self.tcpConn)
class ClusterConfigItem: class ClusterConfigItem:
def __init__(self, serverConfigName, serverName, serverPort): def __init__(self, serverConfigName, serverName,
serverDaemonPort, serverMsgPort):
self.serverConfigName = serverConfigName self.serverConfigName = serverConfigName
self.serverName = serverName self.serverName = serverName
self.serverPort = serverPort self.serverDaemonPort = serverDaemonPort
self.serverMsgPort = serverMsgPort
# Camera Offset # Camera Offset
self.xyz = Vec3(0) self.xyz = Vec3(0)
self.hpr = Vec3(0) self.hpr = Vec3(0)
@ -347,9 +350,10 @@ def createClusterClient():
fs = configData.get('film size', None) fs = configData.get('film size', None)
fo = configData.get('film offset', None) fo = configData.get('film offset', None)
if displayMode == 'client': if displayMode == 'client':
#lens.setInterocularDistance(pos[0])
base.cam.setPos(pos)
lens = base.cam.node().getLens() lens = base.cam.node().getLens()
lens.setViewHpr(hpr) lens.setViewHpr(hpr)
lens.setIodOffset(pos[0])
if fl is not None: if fl is not None:
lens.setFocalLength(fl) lens.setFocalLength(fl)
if fs is not None: if fs is not None:
@ -365,14 +369,22 @@ def createClusterClient():
(serverConfigName, clusterConfig)) (serverConfigName, clusterConfig))
base.notify.warning('%s will not be used.' % serverConfigName) base.notify.warning('%s will not be used.' % serverConfigName)
else: else:
# Server port # Daemon port
serverPortConfigName = 'cluster-server-port-%s' % displayName serverDaemonPortConfigName = (
serverPort = base.config.GetInt(serverPortConfigName, 'cluster-server-daemon-port-%s' % displayName)
CLUSTER_SERVER_PORT) serverDaemonPort = base.config.GetInt(
serverDaemonPortConfigName,
CLUSTER_DAEMON_PORT)
# TCP Server port
serverMsgPortConfigName = (
'cluster-server-msg-port-%s' % displayName)
serverMsgPort = base.config.GetInt(serverMsgPortConfigName,
CLUSTER_SERVER_PORT)
cci = ClusterConfigItem( cci = ClusterConfigItem(
serverConfigName, serverConfigName,
serverName, serverName,
serverPort) serverDaemonPort,
serverMsgPort)
# Init cam offset # Init cam offset
cci.setCamOffset(pos, hpr) cci.setCamOffset(pos, hpr)
# Init frustum if specified # Init frustum if specified

View File

@ -28,12 +28,23 @@ ClientConfigs = {
'two-server': [{'display name': 'master', 'two-server': [{'display name': 'master',
'display mode': 'client', 'display mode': 'client',
'pos': Vec3(0), 'pos': Vec3(0),
#'hpr': Vec3(30, 0, 0)}, 'hpr': Vec3(0)},
'hpr': Vec3(0, 0, 0)},
{'display name': 'la', {'display name': 'la',
'pos': Vec3(0), 'pos': Vec3(0),
#'hpr': Vec3(-30, 0, 0) 'hpr': Vec3(0)
'hpr': Vec3(0, 0, 0) }
],
'three-server': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(0),
'hpr': Vec3(0)},
{'display name': 'la',
'pos': Vec3(0),
'hpr': Vec3(0)
},
{'display name': 'lb',
'pos': Vec3(0),
'hpr': Vec3(0)
} }
], ],
'mono-cave': [{'display name': 'la', 'mono-cave': [{'display name': 'la',
@ -110,320 +121,6 @@ ClientConfigs = {
'film offset': (-0.000, 0.173), 'film offset': (-0.000, 0.173),
}, },
], ],
'nemo-cave': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'la',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lb',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lc',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (-0.000, 0.173),
},
{'display name': 'ra',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
{'display name': 'rb',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rc',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(-51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (-0.000, 0.173),
},
{'display name': 'lAudienceL',
'pos': Vec3(-4.895, -0.020, 5.000),
'hpr': Vec3(51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rAudienceL',
'pos': Vec3(-5.105, -8.0, 5.000),
'hpr': Vec3(51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
{'display name': 'lAudienceR',
'pos': Vec3(5.105, -0.020, 5.000),
'hpr': Vec3(-51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rAudienceR',
'pos': Vec3(4.895, -8.0, 5.000),
'hpr': Vec3(-51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
],
'nemo-cave-narrow': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'la',
'pos': Vec3(-0.105, -19.890, 4.500),
'hpr': Vec3(51.500, 0.000, 0.000),
'focal length': 1.662,
'film size': (1.000, 0.828),
'film offset': (1.079, 0.207),
},
{'display name': 'lb',
'pos': Vec3(-0.105, -19.890, 4.500),
'hpr': Vec3(0.000, 0.000, 0.000),
'focal length': 2.186,
'film size': (1.000, 0.828),
'film offset': (0.007, 0.207),
},
{'display name': 'lc',
'pos': Vec3(-0.105, -19.890, 4.500),
'hpr': Vec3(-51.500, 0.000, 0.000),
'focal length': 1.673,
'film size': (1.000, 0.828),
'film offset': (-1.070, 0.207),
},
{'display name': 'ra',
'pos': Vec3(0.105, -19.890, 4.500),
'hpr': Vec3(51.500, 0.000, 0.000),
'focal length': 1.673,
'film size': (1.000, 0.828),
'film offset': (1.070, 0.207),
},
{'display name': 'rb',
'pos': Vec3(0.105, -19.890, 4.500),
'hpr': Vec3(0.000, 0.000, 0.000),
'focal length': 2.186,
'film size': (1.000, 0.828),
'film offset': (-0.007, 0.207),
},
{'display name': 'rc',
'pos': Vec3(0.105, -19.890, 4.500),
'hpr': Vec3(-51.500, 0.000, 0.000),
'focal length': 1.662,
'film size': (1.000, 0.828),
'film offset': (-1.079, 0.207),
},
{'display name': 'lAudienceL',
'pos': Vec3(-0.105, -19.890, 4.500),
'hpr': Vec3(49.038, 0.000, 0.000),
'focal length': 1.452,
'film size': (1.000, 0.797),
'film offset': (-0.292, 0.149),
},
{'display name': 'rAudienceL',
'pos': Vec3(0.105, -19.890, 4.500),
'hpr': Vec3(49.038, 0.000, 0.000),
'focal length': 1.468,
'film size': (1.000, 0.797),
'film offset': (-0.306, 0.149),
},
{'display name': 'lAudienceR',
'pos': Vec3(-0.105, -19.890, 4.500),
'hpr': Vec3(-52.750, 0.000, 0.000),
'focal length': 1.551,
'film size': (1.000, 0.796),
'film offset': (0.245, 0.149),
},
{'display name': 'rAudienceR',
'pos': Vec3(0.105, -19.890, 4.500),
'hpr': Vec3(-52.750, 0.000, 0.000),
'focal length': 1.534,
'film size': (1.000, 0.796),
'film offset': (0.232, 0.149),
},
{'display name': 'lCart',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rCart',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
],
'fourd-cave': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'la',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lb',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lc',
'pos': Vec3(-0.105, -0.020, 5.000),
'hpr': Vec3(-51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (-0.000, 0.173),
},
{'display name': 'ra',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(51.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
{'display name': 'rb',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(0.370, 0.000, 0.000),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rc',
'pos': Vec3(0.105, -0.020, 5.000),
'hpr': Vec3(-51.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (-0.000, 0.173),
},
{'display name': 'lAudienceL',
'pos': Vec3(-4.895, -0.020, 5.000),
'hpr': Vec3(65.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rAudienceL',
'pos': Vec3(-5.105, -8.0, 5.000),
'hpr': Vec3(65.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
{'display name': 'lAudienceR',
'pos': Vec3(5.105, -0.020, 5.000),
'hpr': Vec3(-65.213, 0.000, 0.000),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rAudienceR',
'pos': Vec3(4.895, -8.0, 5.000),
'hpr': Vec3(-65.675, 0.000, 0.000),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
],
'parallax-cave': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'la',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lb',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'lc',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (-0.000, 0.173),
},
{'display name': 'ra',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.820,
'film size': (1.000, 0.830),
'film offset': (0.000, 0.173),
},
{'display name': 'rb',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.815,
'film size': (1.000, 0.831),
'film offset': (0.000, 0.173),
},
{'display name': 'rc',
'pos': Vec3(0),
'hpr': Vec3(0),
'focal length': 0.809,
'film size': (1.000, 0.831),
'film offset': (-0.000, 0.173),
},
],
'carttest': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(0),
'hpr': Vec3(0),
},
{'display name': 'left',
'pos': Vec3(-.105, 0, 0),
'hpr': Vec3(0, 0, 0)},
{'display name': 'right',
'pos': Vec3(.105, 0, 0),
'hpr': Vec3(0, 0, 0)}
],
'ursula': [{'display name': 'master', 'ursula': [{'display name': 'master',
'display mode': 'client', 'display mode': 'client',
'pos': Vec3(0), 'pos': Vec3(0),

View File

@ -21,8 +21,12 @@ CLUSTER_TIME_DATA = 8
CLUSTER_EXIT = 100 CLUSTER_EXIT = 100
#Port number for cluster rendering #Port number for cluster rendering
CLUSTER_SERVER_PORT = 1970 # DAEMON PORT IS PORT USED FOR STARTUP MESSAGE EXCHANGE
# CAN BE OVERRIDEN WITH cluster-daemon-client-port for client
# and cluster-daemon-server-port for server
CLUSTER_DAEMON_PORT = 8001 CLUSTER_DAEMON_PORT = 8001
# THIS IS THE TCP PORT USED FOR EXCHANGE OF DATA ONCE STARTUP IS COMPLETE
CLUSTER_SERVER_PORT = 1970
# Precede command string with ! to tell server to execute command string # Precede command string with ! to tell server to execute command string
# NOTE: Had to stick with the import __builtin__ scheme, at startup, # NOTE: Had to stick with the import __builtin__ scheme, at startup,

View File

@ -179,7 +179,7 @@ class ClusterServer(DirectObject.DirectObject):
def handleCamOffset(self, dgi): def handleCamOffset(self, dgi):
""" Set offset of camera from cameraJig """ """ Set offset of camera from cameraJig """
(x, y, z, h, p, r) = self.msgHandler.parseCamOffsetDatagram(dgi) (x, y, z, h, p, r) = self.msgHandler.parseCamOffsetDatagram(dgi)
self.lens.setIodOffset(x) self.camera.setPos(x,y,z)
self.lens.setViewHpr(h, p, r) self.lens.setViewHpr(h, p, r)
def handleCamFrustum(self, dgi): def handleCamFrustum(self, dgi):