(self, cbfnc)
| 322 | # (integer) StatusMajor, (integer) StatusMinor, (string) message |
| 323 | # |
| 324 | def StatusChangeCallback(self, cbfnc): |
| 325 | if cbfnc is not None and self.__status_callback is not None: |
| 326 | # In this case, the program must first disable the |
| 327 | # current StatusChangeCallback() before setting a new one. |
| 328 | raise RuntimeError('StatusChangeCallback() is already enabled') |
| 329 | |
| 330 | if cbfnc is None and self.__status_callback is None: |
| 331 | # This is fine: disabling a callback when there is no |
| 332 | # callback is a simple no-op. |
| 333 | return |
| 334 | |
| 335 | if cbfnc is not None: |
| 336 | # Subscribe to StatusChange signals, which will be processed |
| 337 | # by the callback function |
| 338 | self.__status_callback = cbfnc |
| 339 | self.__dbuscon.add_signal_receiver(cbfnc, |
| 340 | signal_name='StatusChange', |
| 341 | dbus_interface='net.openvpn.v3.backends', |
| 342 | bus_name='net.openvpn.v3.log', |
| 343 | path=self.__session_path) |
| 344 | else: |
| 345 | # Only remove the callback if there actually *is* a callback |
| 346 | # currently. |
| 347 | if self.__status_callback is not None: |
| 348 | self.__dbuscon.remove_signal_receiver(self.__status_callback, |
| 349 | 'StatusChange') |
| 350 | self.__status_callback = None |
| 351 | |
| 352 | self.__set_log_forward() |
| 353 | |
| 354 | |
| 355 | ## |
no test coverage detected