forked from M-Labs/artiq
Merge branch 'master' into nac3
This commit is contained in:
commit
0978cd0e35
|
@ -188,17 +188,27 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||||
except:
|
except:
|
||||||
logger.warning("unable to read metadata from %s",
|
logger.warning("unable to read metadata from %s",
|
||||||
info.filePath(), exc_info=True)
|
info.filePath(), exc_info=True)
|
||||||
rd = dict()
|
|
||||||
|
rd = {}
|
||||||
if "archive" in f:
|
if "archive" in f:
|
||||||
rd = {k: (True, v[()]) for k, v in f["archive"].items()}
|
def visitor(k, v):
|
||||||
|
if isinstance(v, h5py.Dataset):
|
||||||
|
rd[k] = (True, v[()])
|
||||||
|
|
||||||
|
f["archive"].visititems(visitor)
|
||||||
|
|
||||||
if "datasets" in f:
|
if "datasets" in f:
|
||||||
for k, v in f["datasets"].items():
|
def visitor(k, v):
|
||||||
if k in rd:
|
if isinstance(v, h5py.Dataset):
|
||||||
logger.warning("dataset '%s' is both in archive and "
|
if k in rd:
|
||||||
"outputs", k)
|
logger.warning("dataset '%s' is both in archive "
|
||||||
rd[k] = (True, v[()])
|
"and outputs", k)
|
||||||
if rd:
|
rd[k] = (True, v[()])
|
||||||
self.datasets.init(rd)
|
|
||||||
|
f["datasets"].visititems(visitor)
|
||||||
|
|
||||||
|
self.datasets.init(rd)
|
||||||
|
|
||||||
self.dataset_changed.emit(info.filePath())
|
self.dataset_changed.emit(info.filePath())
|
||||||
|
|
||||||
def list_activated(self, idx):
|
def list_activated(self, idx):
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
import sys
|
|
||||||
import socket
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def set_keepalive(sock, after_idle, interval, max_fails):
|
|
||||||
if sys.platform.startswith("linux"):
|
|
||||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, after_idle)
|
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, interval)
|
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, max_fails)
|
|
||||||
elif sys.platform.startswith("win") or sys.platform.startswith("cygwin"):
|
|
||||||
# setting max_fails is not supported, typically ends up being 5 or 10
|
|
||||||
# depending on Windows version
|
|
||||||
sock.ioctl(socket.SIO_KEEPALIVE_VALS,
|
|
||||||
(1, after_idle * 1000, interval * 1000))
|
|
||||||
else:
|
|
||||||
logger.warning("TCP keepalive not supported on platform '%s', ignored",
|
|
||||||
sys.platform)
|
|
||||||
|
|
||||||
|
|
||||||
def initialize_connection(host, port):
|
|
||||||
sock = socket.create_connection((host, port))
|
|
||||||
set_keepalive(sock, 10, 10, 3)
|
|
||||||
logger.debug("connected to %s:%d", host, port)
|
|
||||||
return sock
|
|
|
@ -11,10 +11,10 @@ from fractions import Fraction
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from artiq.coredevice import exceptions
|
from artiq.coredevice import exceptions
|
||||||
from artiq.coredevice.comm import initialize_connection
|
|
||||||
from artiq import __version__ as software_version
|
from artiq import __version__ as software_version
|
||||||
from artiq import __artiq_dir__ as artiq_dir
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
|
|
||||||
|
from sipyco.keepalive import create_connection
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ class CommKernel:
|
||||||
def open(self):
|
def open(self):
|
||||||
if hasattr(self, "socket"):
|
if hasattr(self, "socket"):
|
||||||
return
|
return
|
||||||
self.socket = initialize_connection(self.host, self.port)
|
self.socket = create_connection(self.host, self.port)
|
||||||
self.socket.sendall(b"ARTIQ coredev\n")
|
self.socket.sendall(b"ARTIQ coredev\n")
|
||||||
endian = self._read(1)
|
endian = self._read(1)
|
||||||
if endian == b"e":
|
if endian == b"e":
|
||||||
|
|
|
@ -2,8 +2,7 @@ from enum import Enum
|
||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from artiq.coredevice.comm import initialize_connection
|
from sipyco.keepalive import create_connection
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -54,7 +53,7 @@ class CommMgmt:
|
||||||
def open(self):
|
def open(self):
|
||||||
if hasattr(self, "socket"):
|
if hasattr(self, "socket"):
|
||||||
return
|
return
|
||||||
self.socket = initialize_connection(self.host, self.port)
|
self.socket = create_connection(self.host, self.port)
|
||||||
self.socket.sendall(b"ARTIQ management\n")
|
self.socket.sendall(b"ARTIQ management\n")
|
||||||
endian = self._read(1)
|
endian = self._read(1)
|
||||||
if endian == b"e":
|
if endian == b"e":
|
||||||
|
|
|
@ -2,7 +2,8 @@ import asyncio
|
||||||
import logging
|
import logging
|
||||||
import struct
|
import struct
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from .comm import set_keepalive
|
|
||||||
|
from sipyco.keepalive import async_open_connection
|
||||||
|
|
||||||
__all__ = ["TTLProbe", "TTLOverride", "CommMonInj"]
|
__all__ = ["TTLProbe", "TTLOverride", "CommMonInj"]
|
||||||
|
|
||||||
|
@ -28,8 +29,13 @@ class CommMonInj:
|
||||||
self.disconnect_cb = disconnect_cb
|
self.disconnect_cb = disconnect_cb
|
||||||
|
|
||||||
async def connect(self, host, port=1383):
|
async def connect(self, host, port=1383):
|
||||||
self._reader, self._writer = await asyncio.open_connection(host, port)
|
self._reader, self._writer = await async_open_connection(
|
||||||
set_keepalive(self._writer.transport.get_extra_info('socket'), 1, 1, 3)
|
host,
|
||||||
|
port,
|
||||||
|
after_idle=1,
|
||||||
|
interval=1,
|
||||||
|
max_fails=3,
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._writer.write(b"ARTIQ moninj\n")
|
self._writer.write(b"ARTIQ moninj\n")
|
||||||
|
|
Loading…
Reference in New Issue