Source code for dcar
"""D-Car main API.
This should normally be enough for implementing message bus clients.
"""
__version__ = '0.3.0'
# flake8: noqa
import os
import logging
from collections import namedtuple
from . import errors
from .bus import Bus
from .errors import *
from .remote import RemoteObject
from .router import MatchRule
__all__ = [
'Bus',
'MatchRule',
'Variant',
'UnixFD',
'RemoteObject',
] + errors.__all__
logging.getLogger(__name__).addHandler(logging.NullHandler())
Variant = namedtuple('Variant', 'signature value')
Variant.__doc__ += '\nA D-Bus Variant.'
Variant.signature.__doc__ = 'D-Bus type signature'
Variant.value.__doc__ = 'value of the Variant'
[docs]class UnixFD:
"""Wrapper for a unix file descriptor.
The file descriptor will be :func:`duplicated <os.dup>`. The caller is
responsible for closing the original file descriptor.
:param f: file descriptor or object that has a ``fileno()`` method which
returns a file descriptor
:type f: int or file-like object
:param bool close: if set to ``True`` the original file descriptor will be
closed after duplicating it
"""
def __init__(self, f, close=False):
if isinstance(f, int):
self._fd = os.dup(f)
if close:
os.close(f)
else:
self._fd = os.dup(f.fileno())
if close:
f.close()
[docs] def fileno(self):
"""Return the file descriptor.
:returns: file descriptor
:rtype: int
"""
return self._fd