Пример #1
0
    def unbindDevice(self, message):
        """
        Invoked when a Device wishes to unbind from the Server.

        All handles on the device a freed. We allow Sessions to live for now,
        but they will get DeviceGoneAway when they try to make another
        request.
        """

        if message.system_request.HasField("device"):
            device = Devices.removeFromProtobuf(message.system_request.device)

            self.connection.device = None
            device.connection = None

            if device not in Devices:
                return SystemResponseFactory.unbound(device).inReplyTo(message).build()
            else:
                return (
                    SystemResponseFactory.error(Message.SystemResponse.UNBOUND, "error unbinding")
                    .inReplyTo(message)
                    .build()
                )
        else:
            raise Exception("UNBIND_DEVICE request does not specify a device")