ctrlX Data Layer API for Python  1.6.0
The ctrlX Data Layer API allows access to the ctrlX Data Layer with Python
provider.py
1 """
2 Class Provider
3 """
4 import datalayer
5 from datalayer.clib_provider import C_DLR_PROVIDER
6 from datalayer.provider_node import ProviderNode
7 from datalayer.variant import Result, Variant
8 
9 
10 class Provider:
11  """
12  Provider interface to manage provider nodes
13  Hint: see python context manager for instance handling
14  """
15 
16  __slots__ = ['__provider', '__closed']
17 
18  def __init__(self, c_provider: C_DLR_PROVIDER):
19  """
20  generate Provider
21  """
22  self.__provider: C_DLR_PROVIDER = c_provider
23  self.__closed = False
24 
25  def __enter__(self):
26  """
27  use the python context manager
28  """
29  return self
30 
31  def __exit__(self, exc_type, exc_val, exc_tb):
32  """
33  use the python context manager
34  """
35  self.close()
36 
37  def close(self):
38  """
39  closes the provider instance
40  """
41  if self.__closed:
42  return
43  self.__closed = True
44  datalayer.clib.libcomm_datalayer.DLR_providerStop(self.__provider)
45  datalayer.clib.libcomm_datalayer.DLR_providerDelete(self.__provider)
46 
47  def register_type(self, address: str, pathname: str) -> Result:
48  """
49  Register a type to the datalayer
50  @param[in] address Address of the node to register (no wildcards allowed)
51  @param[in] pathname Path to flatbuffer bfbs
52  @returns <Result>, status of function call
53  """
54  b_address = address.encode('utf-8')
55  b_pathname = pathname.encode('utf-8')
56  return Result(datalayer.clib.libcomm_datalayer.DLR_providerRegisterType(self.__provider, b_address, b_pathname))
57 
58  def unregister_type(self, address: str) -> Result:
59  """
60  Unregister a type from the datalayer
61  @param[in] address Address of the node to register (wildcards allowed)
62  @returns <Result>, status of function call
63  """
64  b_address = address.encode('utf-8')
65  return Result(datalayer.clib.libcomm_datalayer.DLR_providerUnregisterType(self.__provider, b_address))
66 
67  def register_node(self, address: str, node: ProviderNode) -> Result:
68  """
69  Register a node to the datalayer
70  @param[in] address Address of the node to register (wildcards allowed)
71  @param[in] node Node to register
72  @returns <Result>, status of function call
73  """
74  b_address = address.encode('utf-8')
75  return Result(datalayer.clib.libcomm_datalayer.DLR_providerRegisterNode(self.__provider, b_address, node.get_handle()))
76 
77  def unregister_node(self, address: str) -> Result:
78  """
79  Unregister a node from the datalayer
80  @param[in] address Address of the node to register (wildcards allowed)
81  @returns <Result>, status of function call
82  """
83  b_address = address.encode('utf-8')
84  return Result(datalayer.clib.libcomm_datalayer.DLR_providerUnregisterNode(self.__provider, b_address))
85 
86  def set_timeout_node(self, node: ProviderNode, timeout_ms: int) -> Result:
87  """
88  Set timeout for a node for asynchron requests (default value is 1000ms)
89  @param[in] node Node to set timeout for
90  @param[in] timeoutMS Timeout in milliseconds for this node
91  @returns <Result>, status of function call
92  """
93  if node is None:
94  return Result.FAILED
95  return Result(datalayer.clib.libcomm_datalayer.DLR_providerSetTimeoutNode(self.__provider, node.get_handle(), timeout_ms))
96 
97  def start(self) -> Result:
98  """
99  Start the provider
100  @returns <Result>, status of function call
101  """
102  return Result(datalayer.clib.libcomm_datalayer.DLR_providerStart(self.__provider))
103 
104  def stop(self) -> Result:
105  """
106  Stop the provider
107  @returns <Result>, status of function call
108  """
109  return Result(datalayer.clib.libcomm_datalayer.DLR_providerStop(self.__provider))
110 
111  def is_connected(self) -> bool:
112  """
113  returns whether provider is connected
114  @returns status of connection
115  """
116  return datalayer.clib.libcomm_datalayer.DLR_providerIsConnected(self.__provider)
117 
118  def get_token(self) -> Variant:
119  """
120  return the current token of the current request.You can call this function during your onRead, onWrite, ... methods of your ProviderNodes. If there is no current request the method return an empty token
121  @returns <Variant> current token
122  """
123  return Variant(datalayer.clib.libcomm_datalayer.DLR_providerGetToken(self.__provider))
datalayer.provider.Provider.__exit__
def __exit__(self, exc_type, exc_val, exc_tb)
use the python context manager
Definition: provider.py:34
datalayer.provider.Provider
Definition: provider.py:14
datalayer.provider.Provider.set_timeout_node
Result set_timeout_node(self, ProviderNode node, int timeout_ms)
Set timeout for a node for asynchron requests (default value is 1000ms)
Definition: provider.py:92
datalayer.provider.Provider.close
def close(self)
closes the provider instance
Definition: provider.py:40
datalayer.variant.Result
Definition: variant.py:19
datalayer.provider.Provider.__enter__
def __enter__(self)
use the python context manager
Definition: provider.py:28
datalayer.variant
Definition: variant.py:1
datalayer.variant.Variant
Variant is a container for a many types of data.
Definition: variant.py:131
datalayer.provider.Provider.__closed
__closed
Definition: provider.py:23
datalayer.provider.Provider.register_node
Result register_node(self, str address, ProviderNode node)
Register a node to the datalayer.
Definition: provider.py:73
datalayer.provider.Provider.unregister_type
Result unregister_type(self, str address)
Unregister a type from the datalayer.
Definition: provider.py:63
datalayer.provider.Provider.unregister_node
Result unregister_node(self, str address)
Unregister a node from the datalayer.
Definition: provider.py:82
datalayer.provider.Provider.stop
Result stop(self)
Stop the provider.
Definition: provider.py:108
datalayer.provider_node
Definition: provider_node.py:1
datalayer.provider.Provider.get_token
Variant get_token(self)
return the current token of the current request.You can call this function during your onRead,...
Definition: provider.py:122
datalayer.provider.Provider.__init__
def __init__(self, C_DLR_PROVIDER c_provider)
generate Provider
Definition: provider.py:21
datalayer.provider.Provider.register_type
Result register_type(self, str address, str pathname)
Register a type to the datalayer.
Definition: provider.py:53
datalayer.provider.Provider.start
Result start(self)
Start the provider.
Definition: provider.py:101
datalayer.provider.Provider.is_connected
bool is_connected(self)
returns whether provider is connected
Definition: provider.py:115