def __init__(self):
     self._zmq = ZmqRemoteProcedureCall()
     self._requestSocket = self._zmq.requestSocket('localhost',
                                                   MyServer.REPLY_PORT)
     self._subscriberSocket = self._zmq.subscriberSocket(
         'localhost', MyPublisher.PUBLISHER_PORT, conflate=True)
     self._requestSocketOnPublisher = self._zmq.requestSocket(
         'localhost', MyPublisher.REPLY_PORT)
     self._logger = Logger.of('MyClient')
 def __init__(self, timeModule=time):
     logging.basicConfig(level=logging.DEBUG,
                         format='%(asctime)s %(message)s')
     self._zmq = ZmqRemoteProcedureCall()
     self._replySocket = self._zmq.replySocket(self.REPLY_PORT)
     self._timeMod = timeModule
     self._isTerminated = False
     self._logger = Logger.of('MyServer')
     self.loop()
class MyServer():

    SUCCESS = 123
    REPLY_PORT = 4010
    RUNNING_MESSAGE = 'imrunning'
    TIME_TO_EXECUTE = 2

    def __init__(self, timeModule=time):
        logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(message)s')
        self._zmq = ZmqRemoteProcedureCall()
        self._replySocket = self._zmq.replySocket(self.REPLY_PORT)
        self._timeMod = timeModule
        self._isTerminated = False
        self._logger = Logger.of('MyServer')
        self.loop()

    def loop(self):
        self._logger.notice("%s" % self.RUNNING_MESSAGE)
        while not self._isTerminated:
            self._logger.notice('looping')
            self._zmq.handleRequest(self, self._replySocket, multi=False)
            self._timeMod.sleep(0.1)
        self._logger.notice("Terminating")

    def returnSuccessAfter2Seconds(self):
        self._logger.notice('invoked returnSuccessAfter2Seconds')
        self._timeMod.sleep(self.TIME_TO_EXECUTE)
        return self.SUCCESS

    def raiseAnException(self):
        self._logger.notice('invoked raiseAnException')
        raise MyException('wanted Exception')

    def getSomethingWithALogger(self, value):
        return HasALogger(value)

    @staticmethod
    def startUpServer():
        MyServer()

    @staticmethod
    def commandToSpawn():
        cmd= 'python -c "from %s import MyServer; '\
             'MyServer.startUpServer()"' % MyServer.__module__
        return cmd
Beispiel #4
0
def deformableMirror(hostname, port):

    from plico_dm.client.deformable_mirror_client import DeformableMirrorClient
    from plico.rpc.zmq_remote_procedure_call import ZmqRemoteProcedureCall
    from plico.rpc.zmq_ports import ZmqPorts
    from plico.rpc.sockets import Sockets

    rpc = ZmqRemoteProcedureCall()
    zmqPorts = ZmqPorts(hostname, port)
    sockets = Sockets(zmqPorts, rpc)
    return DeformableMirrorClient(rpc, sockets)
Beispiel #5
0
def instrument(hostname, port):

    from tipico.client.instrument_client import InstrumentClient
    from plico.rpc.zmq_remote_procedure_call import ZmqRemoteProcedureCall
    from plico.rpc.zmq_ports import ZmqPorts
    from plico.rpc.sockets import Sockets

    rpc = ZmqRemoteProcedureCall()
    zmqPorts = ZmqPorts(hostname, port)
    sockets = Sockets(zmqPorts, rpc)
    return InstrumentClient(rpc, sockets)
Beispiel #6
0
    def setUp(self):
        self._setUpBasicLogging()
        self.server = None
        self._wasSuccessful = False

        self._removeTestFolderIfItExists()
        self._makeTestDir()
        self.configuration = Configuration()
        self.configuration.load(self.CONF_FILE)
        self.rpc = ZmqRemoteProcedureCall()

        calibrationRootDir = self.configuration.calibrationRootDir()
        self._setUpCalibrationTempFolder(calibrationRootDir)
class MyClient():
    def __init__(self):
        self._zmq = ZmqRemoteProcedureCall()
        self._requestSocket = self._zmq.requestSocket('localhost',
                                                      MyServer.REPLY_PORT)
        self._subscriberSocket = self._zmq.subscriberSocket(
            'localhost', MyPublisher.PUBLISHER_PORT, conflate=True)
        self._requestSocketOnPublisher = self._zmq.requestSocket(
            'localhost', MyPublisher.REPLY_PORT)
        self._logger = Logger.of('MyClient')

    def callASuccessfulMethod(self, timeout):
        return self._zmq.sendRequest(self._requestSocket,
                                     'returnSuccessAfter2Seconds',
                                     timeout=timeout)

    def callAMethodThatRaisesMyException(self):
        return self._zmq.sendRequest(self._requestSocket,
                                     'raiseAnException',
                                     timeout=2 * MyServer.TIME_TO_EXECUTE)

    def getAnObjectThatHasALogger(self, value):
        return self._zmq.sendRequest(self._requestSocket,
                                     'getSomethingWithALogger', [value],
                                     timeout=1)

    def readFromPublisher(self):
        timeoutInSec = 3.
        obj = self._zmq.receivePickable(self._subscriberSocket, timeoutInSec)
        self._logger.notice('read %d from publisher' % obj.getValue())
        return obj

    def getLastCounterFromPublisher(self):
        value = self._zmq.sendRequest(self._requestSocketOnPublisher,
                                      'getLastCounter', [],
                                      timeout=1)
        self._logger.notice('asked to publisher and got %d' % value)
        return value
class MyPublisher():
    REPLY_PORT = 4011
    PUBLISHER_PORT = 4012
    RUNNING_MESSAGE = 'imrunning'
    CYCLE_PERIOD = 0.01

    def __init__(self, timeModule=time):
        logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(message)s')
        self._zmq = ZmqRemoteProcedureCall()
        self._replySocket = self._zmq.replySocket(self.REPLY_PORT)
        self._publisherSocket = self._zmq.publisherSocket(self.PUBLISHER_PORT)
        self._counter = 0
        self._timeMod = timeModule
        self._isTerminated = False
        self._logger = Logger.of('MyPublisher')
        self.loop()

    def loop(self):
        self._logger.notice("%s" % self.RUNNING_MESSAGE)
        while not self._isTerminated:
            self._logger.notice('looping counter %d' % self._counter)
            self._zmq.handleRequest(self, self._replySocket, multi=False)
            anObject = MyObject(self._counter)
            self._zmq.publishPickable(self._publisherSocket, anObject)
            self._counter += 1
            self._timeMod.sleep(self.CYCLE_PERIOD)
        self._logger.notice("Terminating")

    def getLastCounter(self):
        return self._counter

    @staticmethod
    def startUp():
        MyPublisher()

    @staticmethod
    def commandToSpawn():
        cmd= 'python -c "from %s import MyPublisher; '\
             'MyPublisher.startUp()"' % MyServer.__module__
        return cmd
 def _createZmqBasedRPC(self):
     zmqPorts = ZmqPorts.fromConfiguration(self._configuration,
                                           self._configurationSection)
     self._rpc = ZmqRemoteProcedureCall()
     self._sockets = Sockets(zmqPorts, self._rpc)