Change-Id: I4e40e0ef8e80999832846eac3a415fdd767c6d98
This commit is contained in:
Enrico Faulhaber
2017-05-24 17:13:06 +02:00
parent 241af728d6
commit 462b6a0a7e
25 changed files with 130 additions and 84 deletions

View File

@ -46,6 +46,7 @@ from secop.lib.parsing import format_time
class Dispatcher(object):
def __init__(self, logger, options):
self.equipment_id = options.pop('equipment_id')
self.log = logger
@ -213,7 +214,7 @@ class Dispatcher(object):
dd = {
'parameters': self.list_module_params(modulename, only_static=True),
'commands': self.list_module_cmds(modulename),
'properties' : module.PROPERTIES,
'properties': module.PROPERTIES,
}
result['modules'][modulename] = dd
result['equipment_id'] = self.equipment_id

View File

@ -36,6 +36,7 @@ DEMO_RE = re.compile(
class DemoEncoder(MessageEncoder):
def decode(sef, encoded):
# match [!][*|devicename][: *|paramname [: *|propname]] [=value]
match = DEMO_RE.match(encoded)

View File

@ -92,6 +92,7 @@ DEMO_RE_OTHER = re.compile(
class DemoEncoder(MessageEncoder):
def __init__(self, *args, **kwds):
MessageEncoder.__init__(self, *args, **kwds)
self.result = [] # for decoding
@ -321,6 +322,7 @@ DEMO_RE_MZ = re.compile(
class DemoEncoder_MZ(MessageEncoder):
def decode(sef, encoded):
m = DEMO_RE_MZ.match(encoded)
if m:

View File

@ -135,15 +135,18 @@ class DemoEncoder(MessageEncoder):
encode_cmd_result, ),
WriteRequest: (
WRITEREQUEST,
lambda msg: "%s:%s" % (msg.module, msg.parameter) if msg.parameter else msg.module,
lambda msg: "%s:%s" % (
msg.module, msg.parameter) if msg.parameter else msg.module,
'value', ),
WriteReply: (
WRITEREPLY,
lambda msg: "%s:%s" % (msg.module, msg.parameter) if msg.parameter else msg.module,
lambda msg: "%s:%s" % (
msg.module, msg.parameter) if msg.parameter else msg.module,
'value', ),
PollRequest: (
TRIGGERREQUEST,
lambda msg: "%s:%s" % (msg.module, msg.parameter) if msg.parameter else msg.module,
lambda msg: "%s:%s" % (
msg.module, msg.parameter) if msg.parameter else msg.module,
),
HeartbeatRequest: (
HEARTBEATREQUEST,
@ -158,7 +161,8 @@ class DemoEncoder(MessageEncoder):
encode_error_msg, ),
Value: (
EVENT,
lambda msg: "%s:%s" % (msg.module, msg.parameter or (msg.command + '()')) if msg.parameter or msg.command else msg.module,
lambda msg: "%s:%s" % (msg.module, msg.parameter or (
msg.command + '()')) if msg.parameter or msg.command else msg.module,
encode_value_data, ),
}
DECODEMAP = {

View File

@ -35,6 +35,7 @@ except ImportError:
class PickleEncoder(MessageEncoder):
def encode(self, messageobj):
"""msg object -> transport layer message"""
return pickle.dumps(messageobj)

View File

@ -37,6 +37,7 @@ SCPMESSAGE = re.compile(
class SCPEncoder(MessageEncoder):
def encode(self, msg):
"""msg object -> transport layer message"""
# fun for Humans

View File

@ -30,6 +30,7 @@ from secop.lib.parsing import *
class TextEncoder(MessageEncoder):
def __init__(self):
# build safe namespace
ns = dict()

View File

@ -23,6 +23,7 @@
class SECOPError(RuntimeError):
def __init__(self, *args, **kwds):
self.args = args
for k, v in kwds.items():

View File

@ -35,6 +35,7 @@ from secop.protocol.messages import HelpMessage
class TCPRequestHandler(SocketServer.BaseRequestHandler):
def setup(self):
self.log = self.server.log
self._queue = collections.deque(maxlen=100)

View File

@ -50,6 +50,7 @@ class Message(object):
class Value(object):
def __init__(self,
module,
parameter=None,

View File

@ -95,6 +95,7 @@ class Message(object):
class Value(object):
def __init__(self, value=Ellipsis, qualifiers=None, **kwds):
self.dev = ''
self.param = ''
@ -166,6 +167,7 @@ class HelpMessage(Message):
class NoSuchDeviceError(ErrorMessage):
def __init__(self, *devs):
ErrorMessage.__init__(
self,
@ -175,6 +177,7 @@ class NoSuchDeviceError(ErrorMessage):
class NoSuchParamError(ErrorMessage):
def __init__(self, dev, *params):
ErrorMessage.__init__(
self,
@ -185,6 +188,7 @@ class NoSuchParamError(ErrorMessage):
class ParamReadonlyError(ErrorMessage):
def __init__(self, dev, *params):
ErrorMessage.__init__(
self,
@ -196,6 +200,7 @@ class ParamReadonlyError(ErrorMessage):
class InvalidParamValueError(ErrorMessage):
def __init__(self, dev, param, value, e):
ErrorMessage.__init__(
self,
@ -207,6 +212,7 @@ class InvalidParamValueError(ErrorMessage):
class InternalError(ErrorMessage):
def __init__(self, err, **kwds):
ErrorMessage.__init__(
self, errorstring=str(err), errortype='InternalError', **kwds)
@ -217,7 +223,7 @@ MESSAGE = dict((cls.MSGTYPE, cls)
HelpMessage, ErrorMessage, EventMessage, TriggerMessage,
UnsubscribeMessage, SubscribeMessage, PollMessage,
CommandMessage, WriteMessage, ReadMessage, ListMessage
])
])
if __name__ == '__main__':
print("Minimal testing of messages....")