def main(reactor, commID, port): f = open('/home/ros/launcher.log', 'w') log.startLogging(f) rospy.init_node('RCE_Launcher') manager = NodeManager(reactor) commManager = CommManager(reactor, commID) cmdSerializer = CommandSerializer() cmdSerializer.registerCommand([NodeCommand]) commManager.registerContentSerializers([cmdSerializer, TagSerializer()]) distributor = ControlDistributor() distributor.addHandler(types.NODE, manager.addNode) distributor.addHandler(types.RM_NODE, manager.removeNode) commManager.registerMessageProcessors([CommandProcessor(distributor), TagProcessor(distributor)]) factory = RCEServerFactory(commManager) factory.addApprovedMessageTypes([msgTypes.COMMAND, msgTypes.TAG]) reactor.listenTCP(port, factory) def terminate(): reactor.callFromThread(manager.shutdown) reactor.callFromThread(commManager.shutdown) reactor.callFromThread(reactor.stop) rospy.on_shutdown(terminate) reactor.run(installSignalHandlers=False) f.close()
def main(reactor, commID, uidPort, containerPort, relayPort): f = open('/home/rce-user/master.log', 'w') log.startLogging(f) #log.startLogging(sys.stdout) manager = MasterManager(reactor) commManager = CommManager(reactor, commID) loadBalancer = LoadBalancer(commManager) uidServer = UIDServer(loadBalancer, 30) manager.registerLoadBalancer(loadBalancer) manager.registerControlFactory(_createControlFactory(commManager)) cmdSerializer = CommandSerializer() cmdSerializer.registerCommand( [ContainerCommand, RobotCommand, NodeCommand, ParameterCommand, ArrayCommand, FileCommand, ConnectionCommand, ServiceInterfaceCommand, ServiceProviderInterfaceCommand, PublisherInterfaceCommand, SubscriberInterfaceCommand, ServiceConverterCommand, ServiceProviderConverterCommand, PublisherConverterCommand, SubscriberConverterCommand, ServiceForwarderCommand, ServiceProviderForwarderCommand, PublisherForwarderCommand, SubscriberForwarderCommand]) commManager.registerContentSerializers([ConnectDirectiveSerializer(), CommInfoSerializer(), cmdSerializer, TagSerializer(), RequestSerializer()]) commManager.registerMessageProcessors([RequestProcessor(manager)]) reactor.listenTCP(uidPort, uidServer) cb = MasterCallbackFromContainer(uidServer) factory = RCEServerFactory(commManager, [cb], [cb]) reactor.listenTCP(containerPort, factory) cb = MasterCallbackFromRelay(uidServer) factory = RCEServerFactory(commManager, [cb], [cb]) factory.addApprovedMessageTypes([types.REQUEST]) reactor.listenTCP(relayPort, factory) # factory = CloudEngineWebSocketFactory(MasterWebSocketProtocol, manager, # 'ws://localhost:9000') # listenWS(factory) handler = AuthenticationHandler(manager) reactor.listenTCP(9000, Site(MasterRobotAuthentication(handler))) reactor.addSystemEventTrigger('before', 'shutdown', uidServer.shutdown) reactor.addSystemEventTrigger('before', 'shutdown', manager.shutdown) reactor.addSystemEventTrigger('before', 'shutdown', commManager.shutdown) reactor.run() f.close()