示例#1
0
文件: launcher.py 项目: LCROBOT/rce
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()
示例#2
0
文件: master.py 项目: LCROBOT/rce
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()