mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
Add ability to specify ports per server
This commit is contained in:
parent
f9ddc872be
commit
35bf064c9e
@ -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
|
||||
|
@ -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),
|
||||
|
@ -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,
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user