mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
Cluster modifications
This commit is contained in:
parent
14b23efd42
commit
b76d70668c
@ -6,6 +6,7 @@ from ClusterConfig import *
|
|||||||
import DirectNotifyGlobal
|
import DirectNotifyGlobal
|
||||||
import DirectObject
|
import DirectObject
|
||||||
import Task
|
import Task
|
||||||
|
import os
|
||||||
|
|
||||||
class ClusterClient(DirectObject.DirectObject):
|
class ClusterClient(DirectObject.DirectObject):
|
||||||
notify = DirectNotifyGlobal.directNotify.newCategory("ClusterClient")
|
notify = DirectNotifyGlobal.directNotify.newCategory("ClusterClient")
|
||||||
@ -13,27 +14,28 @@ class ClusterClient(DirectObject.DirectObject):
|
|||||||
|
|
||||||
def __init__(self, configList, clusterSyncFlag):
|
def __init__(self, configList, clusterSyncFlag):
|
||||||
# First start up servers using direct daemon
|
# First start up servers using direct daemon
|
||||||
clusterDaemonClient = base.config.GetString(
|
# What is the name of the client machine?
|
||||||
'cluster-daemon-client', 'localhost')
|
clusterDaemonClient = os.popen('uname -n').read()
|
||||||
|
clusterDaemonClient.replace('\n', '')
|
||||||
|
# What daemon port are we using to communicate between client/servers
|
||||||
clusterDaemonPort = base.config.GetInt(
|
clusterDaemonPort = base.config.GetInt(
|
||||||
'cluster-daemon-port', CLUSTER_DAEMON_PORT)
|
'cluster-daemon-port', CLUSTER_DAEMON_PORT)
|
||||||
|
# Create a daemon
|
||||||
self.daemon = DirectD()
|
self.daemon = DirectD()
|
||||||
print 'LISTEN'
|
# Start listening for the response
|
||||||
self.daemon.listenTo(clusterDaemonPort)
|
self.daemon.listenTo(clusterDaemonPort)
|
||||||
|
# Contact server daemons and start up remote server application
|
||||||
for serverConfig in configList:
|
for serverConfig in configList:
|
||||||
serverCommand = (SERVER_STARTUP_STRING %
|
serverCommand = (SERVER_STARTUP_STRING %
|
||||||
(serverConfig.serverPort,
|
(serverConfig.serverPort,
|
||||||
clusterSyncFlag,
|
clusterSyncFlag,
|
||||||
clusterDaemonClient,
|
clusterDaemonClient,
|
||||||
clusterDaemonPort))
|
clusterDaemonPort))
|
||||||
print 'BOOTSTRAP', serverCommand
|
|
||||||
self.daemon.clientReady(serverConfig.serverName,
|
self.daemon.clientReady(serverConfig.serverName,
|
||||||
clusterDaemonPort,
|
clusterDaemonPort,
|
||||||
serverCommand)
|
serverCommand)
|
||||||
print 'WAITING'
|
|
||||||
if not self.daemon.waitForServers(len(configList)):
|
if not self.daemon.waitForServers(len(configList)):
|
||||||
print 'ERROR'
|
print 'Cluster Client, no response from servers'
|
||||||
print 'DONE'
|
|
||||||
self.qcm=QueuedConnectionManager()
|
self.qcm=QueuedConnectionManager()
|
||||||
self.serverList = []
|
self.serverList = []
|
||||||
self.msgHandler = ClusterMsgHandler(ClusterClient.MGR_NUM, self.notify)
|
self.msgHandler = ClusterMsgHandler(ClusterClient.MGR_NUM, self.notify)
|
||||||
|
@ -21,8 +21,8 @@ class ClusterServer(DirectObject.DirectObject):
|
|||||||
MSG_NUM = 2000000
|
MSG_NUM = 2000000
|
||||||
|
|
||||||
def __init__(self,cameraJig,camera):
|
def __init__(self,cameraJig,camera):
|
||||||
global clusterServerPort, clusterSyncFlag, clusterDaemonClient, clusterDaemonPort
|
global clusterServerPort, clusterSyncFlag
|
||||||
print clusterServerPort, clusterSyncFlag, clusterDaemonClient, clusterDaemonPort
|
global clusterDaemonClient, clusterDaemonPort
|
||||||
# Store information about the cluster's camera
|
# Store information about the cluster's camera
|
||||||
self.cameraJig = cameraJig
|
self.cameraJig = cameraJig
|
||||||
self.camera = camera
|
self.camera = camera
|
||||||
@ -52,7 +52,6 @@ class ClusterServer(DirectObject.DirectObject):
|
|||||||
if clusterSyncFlag:
|
if clusterSyncFlag:
|
||||||
self.startSwapCoordinator()
|
self.startSwapCoordinator()
|
||||||
base.win.setSync(1)
|
base.win.setSync(1)
|
||||||
print 'DAEMON'
|
|
||||||
# Send verification of startup to client
|
# Send verification of startup to client
|
||||||
self.daemon = DirectD()
|
self.daemon = DirectD()
|
||||||
# These must be passed in as bootstrap arguments and stored in
|
# These must be passed in as bootstrap arguments and stored in
|
||||||
@ -65,7 +64,6 @@ class ClusterServer(DirectObject.DirectObject):
|
|||||||
clusterDaemonPort
|
clusterDaemonPort
|
||||||
except NameError:
|
except NameError:
|
||||||
clusterDaemonPort = CLUSTER_DAEMON_PORT
|
clusterDaemonPort = CLUSTER_DAEMON_PORT
|
||||||
print 'SERVER READY'
|
|
||||||
self.daemon.serverReady(clusterDaemonClient, clusterDaemonPort)
|
self.daemon.serverReady(clusterDaemonClient, clusterDaemonPort)
|
||||||
|
|
||||||
def startListenerPollTask(self):
|
def startListenerPollTask(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user