> On 25-Jul-2023, at 11:33 PM, John Snow <js...@redhat.com> wrote:
> 
> Useful if we want to use ConsoleSocket() for a socket created by
> socketpair().
> 
> Signed-off-by: John Snow <js...@redhat.com>

Reviewed-by: Ani Sinha <anisi...@redhat.com>

> ---
> python/qemu/machine/console_socket.py | 29 +++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
> 
> diff --git a/python/qemu/machine/console_socket.py 
> b/python/qemu/machine/console_socket.py
> index 4e28ba9bb2..0a4e09ffc7 100644
> --- a/python/qemu/machine/console_socket.py
> +++ b/python/qemu/machine/console_socket.py
> @@ -24,19 +24,32 @@ class ConsoleSocket(socket.socket):
>     """
>     ConsoleSocket represents a socket attached to a char device.
> 
> -    Optionally (if drain==True), drains the socket and places the bytes
> -    into an in memory buffer for later processing.
> -
> -    Optionally a file path can be passed in and we will also
> -    dump the characters to this file for debugging purposes.
> +    :param address: An AF_UNIX path or address.
> +    :param sock_fd: Optionally, an existing socket file descriptor.
> +                    One of address or sock_fd must be specified.
> +    :param file: Optionally, a filename to log to.
> +    :param drain: Optionally, drains the socket and places the bytes
> +                  into an in memory buffer for later processing.
>     """
> -    def __init__(self, address: str, file: Optional[str] = None,
> +    def __init__(self,
> +                 address: Optional[str] = None,
> +                 sock_fd: Optional[int] = None,
> +                 file: Optional[str] = None,
>                  drain: bool = False):
> +        if address is None and sock_fd is None:
> +            raise ValueError("one of 'address' or 'sock_fd' must be 
> specified")
> +        if address is not None and sock_fd is not None:
> +            raise ValueError("can't specify both 'address' and 'sock_fd'")
> +
>         self._recv_timeout_sec = 300.0
>         self._sleep_time = 0.5
>         self._buffer: Deque[int] = deque()
> -        socket.socket.__init__(self, socket.AF_UNIX, socket.SOCK_STREAM)
> -        self.connect(address)
> +        if address is not None:
> +            socket.socket.__init__(self, socket.AF_UNIX, socket.SOCK_STREAM)
> +            self.connect(address)
> +        else:
> +            assert sock_fd is not None
> +            socket.socket.__init__(self, fileno=sock_fd)
>         self._logfile = None
>         if file:
>             # pylint: disable=consider-using-with
> -- 
> 2.41.0
> 


Reply via email to