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

View File

@ -28,12 +28,23 @@ ClientConfigs = {
'two-server': [{'display name': 'master',
'display mode': 'client',
'pos': Vec3(0),
#'hpr': Vec3(30, 0, 0)},
'hpr': Vec3(0, 0, 0)},
'hpr': Vec3(0)},
{'display name': 'la',
'pos': Vec3(0),
#'hpr': Vec3(-30, 0, 0)
'hpr': Vec3(0, 0, 0)
'hpr': Vec3(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',
@ -110,320 +121,6 @@ ClientConfigs = {
'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',
'display mode': 'client',
'pos': Vec3(0),

View File

@ -21,8 +21,12 @@ CLUSTER_TIME_DATA = 8
CLUSTER_EXIT = 100
#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
# 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
# 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):
""" Set offset of camera from cameraJig """
(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)
def handleCamFrustum(self, dgi):