MockYoung32400DataServer¶
- class lsst.ts.ess.csc.MockYoung32400DataServer(log: Logger, simulated_raw_data: Iterable[str], simulation_interval: float)¶
Bases:
OneClientServer
Mock Young 32400 data server.
- Parameters:
- log
logging.Logger
Logger.
- simulated_raw_dataiterable [
str
] Simulated raw data. If the mock server runs out of data then it will log a warning and repeat the final value.
- simulation_interval
float
Interval between writes (sec).
- log
Attributes Summary
Return True if self.reader and self.writer are connected.
Methods Summary
Close the connected client socket, if any.
Call self.__connect_callback.
close
()Close socket server and client socket, and set done_task done.
Close the connected client socket, if any.
connect_callback
(server)read
(n)Read up to n bytes.
read_into
(struct)Read binary data from a stream reader into a
ctypes.Structure
.readexactly
(n)Read exactly n bytes.
readline
()Read a sequence of bytes ending with
\n
.readuntil
([separator])Read one line, where “line” is a sequence of bytes ending with
start
(**kwargs)Start the TCP/IP server.
write
(data)Write data and call
drain
.write_from
(*structs)Write binary data from one or more
ctypes.Structure
s.writelines
(lines)Write an iterable of bytes and call
drain
.Attributes Documentation
- connected¶
Return True if self.reader and self.writer are connected.
Note: if the other end drops the connection and if you are not trying to read data (e.g. in a background loop), then it takes the operating system awhile to realize the connection is lost. So this can return true for some unknown time after the connection has been dropped.
Methods Documentation
- async basic_close_client() None ¶
Close the connected client socket, if any.
Also:
Reset
self.connected_task
to a new Future.Call connect_callback, if a client was connected.
Unlike
close_client
, this does not touchself.should_be_connected
.Always safe to call.
- async call_connect_callback() None ¶
Call self.__connect_callback.
This is always safe to call. It only calls the callback function if that function is not None and if the connection state has changed since the last time this method was called.
- async close() None ¶
Close socket server and client socket, and set done_task done.
Call connect_callback if a client was connected.
Always safe to call.
- async close_client() None ¶
Close the connected client socket, if any.
Also:
Set
self.should_be_connected
false.Reset
self.connected_task
to a new Future.Call connect_callback, if a client was connected.
Always safe to call.
- async connect_callback(server: OneClientServer) None ¶
- async read(n: int) bytes ¶
Read up to n bytes.
- Parameters:
- n
int
The number of bytes to read. If -1 then block until the other end closes its writer, then return all data seen.
- n
- Raises:
ConnectionError
If the connection is lost before, or while, reading.
- async read_into(struct: Structure) None ¶
Read binary data from a stream reader into a
ctypes.Structure
.- Parameters:
- struct
ctypes.Structure
Structure to set.
- struct
- Raises:
ConnectionError
If the connection is lost before, or while, reading.
asyncio.IncompleteReadError
If EOF is reached before
n
bytes can be read. Use theIncompleteReadError.partial
attribute to get the partially read data.
- async readexactly(n: int) bytes ¶
Read exactly n bytes.
- Parameters:
- n
int
The number of bytes to read.
- n
- Raises:
ConnectionError
If the connection is lost before, or while, reading.
asyncio.IncompleteReadError
If EOF is reached before
n
bytes can be read. Use theIncompleteReadError.partial
attribute to get the partially read data.
- async readline() bytes ¶
Read a sequence of bytes ending with
\n
.If EOF is received and
\n
was not found, the method returns partially read data.- Raises:
ConnectionError
If the connection is lost before, or while, reading.
- async readuntil(separator: bytes = b'\n') bytes ¶
Read one line, where “line” is a sequence of bytes ending with .
Read data from the stream until separator is found.
On success, the data and separator will be removed from the internal buffer (consumed). Returned data will include the separator at the end.
- Raises:
ConnectionError
If the connection is lost before, or while, reading.
asyncio.IncompleteReadError
If EOF is reached before the complete separator is found and the internal buffer is reset.
LimitOverrunError
If the amount of data read exceeds the configured stream lmit. The data is left in the internal buffer and can be read again.
- async start(**kwargs: Any) None ¶
Start the TCP/IP server.
This is called automatically by the constructor, and is not intended to be called by the user. It is a public method so that subclasses can override it.
- Parameters:
- **kwargs
dict
[str
,typing.Any
] Additional keyword arguments for
asyncio.start_server
, beyond host and port.
- **kwargs
- Raises:
RuntimeError
If start has already been called and has successfully constructed a server.
- async write(data: bytes) None ¶
Write data and call
drain
.- Parameters:
- data
bytes
The data to write.
- data
- Raises:
ConnectionError
If
self.connected
false before writing begins.
- async write_from(*structs: Structure) None ¶
Write binary data from one or more
ctypes.Structure
s.- Parameters:
- struct
ctypes.Structure
Structure to write.
- struct
- Raises:
ConnectionError
If
self.connected
false before writing begins.
- async writelines(lines: Iterable) None ¶
Write an iterable of bytes and call
drain
.- Parameters:
- lines
collections.abc.Iterable
[bytes
] The data to write, as an iterable collection of
bytes
.
- lines
- Raises:
ConnectionError
If
self.connected
false before writing begins.