diff --git a/tangostationcontrol/setup.cfg b/tangostationcontrol/setup.cfg index 1d52727f782ff41dd2e7e75b2d3137314bfdb82f..971f55af72ab629d99aa3ac67fa31e3251b99232 100644 --- a/tangostationcontrol/setup.cfg +++ b/tangostationcontrol/setup.cfg @@ -24,12 +24,12 @@ classifier = [options] package_dir= - =./ + =. packages=find: python_requires = >=3.7 [options.packages.find] -where=./ +where=. [options.entry_points] console_scripts = diff --git a/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py b/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py index 784750cd0b01a2d7e144858af9f4eca39c6aee14..3a067aa9f6d090c0bdcb0d84f5f9766b6415791c 100644 --- a/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py +++ b/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py @@ -235,9 +235,8 @@ class XSTCollector(StatisticsCollector): # log if we're replacing a subband we were once recording previous_subband_in_slot = self.parameters["xst_subbands"][subband_slot] if previous_subband_in_slot != fields.subband_index: - previous_subband_timestamp = datetime.datetime.fromtimestamp(self.parameters["xst_timestamps"][subband_slot]) - - if previous_subband_timestamp.timestamp() > 0: + if self.parameters["xst_timestamps"][subband_slot] > 0: + previous_subband_timestamp = datetime.datetime.fromtimestamp(self.parameters["xst_timestamps"][subband_slot]) logger.info(f"Stopped recording XSTs for subband {previous_subband_in_slot}. Last data for this subband was received at {previous_subband_timestamp}.") def xst_values(self, subband_indices = None): diff --git a/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py b/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py index c481d085e00170cfa4771c4af0c79dcc675460b5..b70446c30d21714b46d1e96f8cf62ac65a509103 100644 --- a/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py +++ b/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py @@ -27,6 +27,12 @@ class receiver: # add payload to the header, and return the full packet return header + payload + def _read(self, length: int) -> bytes: + """ Low-level read function to fetch at most "length" (>1) bytes. Returns + nothing if there is no data left. """ + + return os.read(self.fd, length) + def read_data(self, data_length: int) -> bytes: """ Read exactly data_length bytes from the TCP connection. """ @@ -35,7 +41,7 @@ class receiver: # try to read the remainder. # NOTE: recv() may return less data than requested, and returns 0 # if there is nothing left to read (end of stream) - more_data = os.read(self.fd, data_length - len(data)) + more_data = self._read(data_length - len(data)) if not more_data: # connection got dropped raise EOFError("End of stream") @@ -54,6 +60,10 @@ class tcp_receiver(receiver): super().__init__(fd=self.sock.fileno()) + def _read(self, length): + # On Windows, we cannot use os.read to read from sockets + return self.sock.recv(length) + def reconnect(self): self.fd = None self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)