coherence.upnp.services.clients.connection_manager_client — Cohen3 0.8.0 documentation

# Source code for coherence.upnp.services.clients.connection_manager_client

    # -*- coding: utf-8 -*-

    # Licensed under the MIT license
    # http://opensource.org/licenses/mit-license.php

    # Copyright 2006-2008, Frank Scholz <coherence@beebits.net>

    class ConnectionManagerClient:

        def __init__(self, service):
            self.service = service
            self.namespace = service.get_type()
            self.url = service.get_control_url()
            self.service.client = self
            self.service.subscribe()

        # def __del__(self):
        #    # print('ConnectionManagerClient deleted')
        #    pass

        def connection_manager_id(self):
            return f'{self.service.device.get_id()}/{self.service.get_id()}'

        def remove(self):
            self.service.remove()
            self.service = None
            self.namespace = None
            self.url = None
            del self

        def subscribe_for_variable(self, var_name, callback, signal=False):
            self.service.subscribe_for_variable(var_name, instance=0,
                                                callback=callback, signal=signal)

        def get_protocol_info(self):
            action = self.service.get_action('GetProtocolInfo')
            return action.call()

        def prepare_for_connection(self, remote_protocol_info,
                                   peer_connection_manager, peer_connection_id,
                                   direction):
            action = self.service.get_action('PrepareForConnection')
            if action:  # optional
                return action.call(RemoteProtocolInfo=remote_protocol_info,
                                   PeerConnectionManager=peer_connection_manager,
                                   PeerConnectionID=peer_connection_id,
                                   Direction=direction)
            return None

        def connection_complete(self, connection_id):
            action = self.service.get_action('ConnectionComplete')
            if action:  # optional
                return action.call(ConnectionID=connection_id)
            return None

        def get_current_connection_ids(self):
            action = self.service.get_action('GetCurrentConnectionIDs')
            return action.call()

        def get_current_connection_info(self, connection_id):
            action = self.service.get_action('GetCurrentConnectionInfo')
            return action.call(ConnectionID=connection_id)