custom device name for fake udp
This commit is contained in:
@ -56,8 +56,8 @@ class NicosStream(Stream):
|
|||||||
self.secnode_uri = {}
|
self.secnode_uri = {}
|
||||||
super().__init__(uri, name)
|
super().__init__(uri, name)
|
||||||
|
|
||||||
def init(self):
|
def init(self, device=None, **kwds):
|
||||||
self.tags['device'] = 'nicos'
|
self.tags['device'] = device or 'nicos'
|
||||||
self.send(f'@nicos/*\n{END_MARKER}{OP_ASK}')
|
self.send(f'@nicos/*\n{END_MARKER}{OP_ASK}')
|
||||||
self._init = True
|
self._init = True
|
||||||
|
|
||||||
|
17
secop.py
17
secop.py
@ -19,7 +19,7 @@ class EnumConvert(dict):
|
|||||||
class SecopStream(Stream):
|
class SecopStream(Stream):
|
||||||
ping_time = 0
|
ping_time = 0
|
||||||
|
|
||||||
def init(self):
|
def init(self, device=None, **kwds):
|
||||||
self._buffer = []
|
self._buffer = []
|
||||||
self.send('*IDN?')
|
self.send('*IDN?')
|
||||||
resend = True
|
resend = True
|
||||||
@ -41,7 +41,7 @@ class SecopStream(Stream):
|
|||||||
else:
|
else:
|
||||||
raise ValueError('missing describing message')
|
raise ValueError('missing describing message')
|
||||||
self.descr = json.loads(match.group(1))
|
self.descr = json.loads(match.group(1))
|
||||||
self.device = self.descr['equipment_id']
|
self.device = device or self.descr['equipment_id']
|
||||||
if self.device.endswith('psi.ch'):
|
if self.device.endswith('psi.ch'):
|
||||||
self.device[-6:] = []
|
self.device[-6:] = []
|
||||||
self.tags['device'] = self.device
|
self.tags['device'] = self.device
|
||||||
@ -110,13 +110,18 @@ class UdpStream(Base):
|
|||||||
except socket.error: # pragma: no cover
|
except socket.error: # pragma: no cover
|
||||||
return None
|
return None
|
||||||
msg = json.loads(msg.decode('utf-8'))
|
msg = json.loads(msg.decode('utf-8'))
|
||||||
if msg['SECoP'] == 'for_other_node':
|
kind = msg.pop('SECoP', None)
|
||||||
uri = msg['uri']
|
if not kind:
|
||||||
elif msg['SECoP'] == 'node':
|
continue
|
||||||
|
if kind == 'for_other_node':
|
||||||
|
uri = msg.pop('uri')
|
||||||
|
kwargs = msg
|
||||||
|
elif kind == 'node':
|
||||||
uri = f"{addr[0]}:{msg['port']}"
|
uri = f"{addr[0]}:{msg['port']}"
|
||||||
|
kwargs = {'name': msg['equipment_id']}
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
yield SecopStream, uri, msg['equipment_id']
|
yield SecopStream, uri, kwargs
|
||||||
|
|
||||||
|
|
||||||
class ScanReply(UdpStream):
|
class ScanReply(UdpStream):
|
||||||
|
10
streams.py
10
streams.py
@ -48,7 +48,7 @@ class Stream(Base):
|
|||||||
_deadline = INF
|
_deadline = INF
|
||||||
_next_connect = 0
|
_next_connect = 0
|
||||||
|
|
||||||
def __init__(self, uri, name=None, timeout=5, encoding='latin-1'):
|
def __init__(self, uri, name=None, timeout=5, encoding='latin-1', **kwds):
|
||||||
self.name = name or uri
|
self.name = name or uri
|
||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.tags = {}
|
self.tags = {}
|
||||||
@ -63,7 +63,7 @@ class Stream(Base):
|
|||||||
self.generator = self.event_generator()
|
self.generator = self.event_generator()
|
||||||
try:
|
try:
|
||||||
self.connect()
|
self.connect()
|
||||||
self.init()
|
self.init(**kwds)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(self.uri, repr(e))
|
print(self.uri, repr(e))
|
||||||
raise
|
raise
|
||||||
@ -261,10 +261,10 @@ class EventStream:
|
|||||||
while 1:
|
while 1:
|
||||||
for stream in self.wait_ready(1):
|
for stream in self.wait_ready(1):
|
||||||
if not isinstance(stream, Stream):
|
if not isinstance(stream, Stream):
|
||||||
for streamcls, uri, *args in stream.events():
|
for streamcls, uri, kwargs in stream.events():
|
||||||
if uri not in self.streams:
|
if uri not in self.streams:
|
||||||
print('add stream', uri, *args)
|
print('add stream', uri, kwargs)
|
||||||
self.streams[uri] = streamcls(uri, *args)
|
self.streams[uri] = streamcls(uri, **kwargs)
|
||||||
for name, stream in self.streams.items():
|
for name, stream in self.streams.items():
|
||||||
try:
|
try:
|
||||||
if stream.get_events(events, maxevents):
|
if stream.get_events(events, maxevents):
|
||||||
|
Reference in New Issue
Block a user