def get_info(self): info = { "protocol": "xpra", "connection_time": int(self.connection_time), "elapsed_time": int(monotonic_time() - self.connection_time), "counter": self.counter, "hello-sent": self.hello_sent, "bandwidth-limit": { "setting": self.bandwidth_limit or 0, "actual": self.soft_bandwidth_limit or 0, } } p = self.protocol if p: info.update({ "connection": p.get_info(), }) info.update(self.get_features_info()) merge_dicts(info, FilePrintMixin.get_info(self)) merge_dicts(info, AudioMixin.get_info(self)) merge_dicts(info, MMAP_Connection.get_info(self)) merge_dicts(info, NetworkStateMixin.get_info(self)) merge_dicts(info, ClientInfoMixin.get_info(self)) merge_dicts(info, WindowsMixin.get_info(self)) merge_dicts(info, EncodingsMixin.get_info(self)) merge_dicts(info, AVSyncMixin.get_info(self)) merge_dicts(info, ClientDisplayMixin.get_info(self)) merge_dicts(info, IdleMixin.get_info(self)) merge_dicts(info, ClipboardConnection.get_info(self)) return info
def send_hello(self, server_capabilities): capabilities = server_capabilities.copy() merge_dicts(capabilities, AudioMixin.get_caps(self)) merge_dicts(capabilities, MMAP_Connection.get_caps(self)) merge_dicts(capabilities, WindowsMixin.get_caps(self)) merge_dicts(capabilities, EncodingsMixin.get_caps(self)) merge_dicts(capabilities, InputMixin.get_caps(self)) merge_dicts(capabilities, AVSyncMixin.get_caps(self)) merge_dicts(capabilities, ClientDisplayMixin.get_caps(self)) self.send("hello", capabilities) self.hello_sent = True
def __init__(self, protocol, disconnect_cb, session_name, idle_add, timeout_add, source_remove, setting_changed, idle_timeout, socket_dir, unix_socket_paths, log_disconnect, dbus_control, get_transient_for, get_focus, get_cursor_data_cb, get_window_id, window_filters, file_transfer, supports_mmap, mmap_filename, min_mmap_size, bandwidth_limit, av_sync, core_encodings, encodings, default_encoding, scaling_control, webcam_enabled, webcam_device, webcam_encodings, sound_properties, sound_source_plugin, supports_speaker, supports_microphone, speaker_codecs, microphone_codecs, default_quality, default_min_quality, default_speed, default_min_speed): log("ServerSource%s", (protocol, disconnect_cb, session_name, idle_add, timeout_add, source_remove, setting_changed, idle_timeout, socket_dir, unix_socket_paths, log_disconnect, dbus_control, get_transient_for, get_focus, get_window_id, window_filters, file_transfer, supports_mmap, mmap_filename, min_mmap_size, bandwidth_limit, av_sync, core_encodings, encodings, default_encoding, scaling_control, webcam_enabled, webcam_device, webcam_encodings, sound_properties, sound_source_plugin, supports_speaker, supports_microphone, speaker_codecs, microphone_codecs, default_quality, default_min_quality, default_speed, default_min_speed)) global counter self.counter = counter.increase() self.protocol = protocol self.connection_time = monotonic_time() self.close_event = Event() self.session_name = session_name AudioMixin.__init__(self, sound_properties, sound_source_plugin, supports_speaker, supports_microphone, speaker_codecs, microphone_codecs) MMAP_Connection.__init__(self, supports_mmap, mmap_filename, min_mmap_size) ClipboardConnection.__init__(self) FilePrintMixin.__init__(self, file_transfer) NetworkStateMixin.__init__(self) ClientInfoMixin.__init__(self) DBUS_Mixin.__init__(self, dbus_control) WindowsMixin.__init__(self, get_transient_for, get_focus, get_cursor_data_cb, get_window_id, window_filters) EncodingsMixin.__init__(self, core_encodings, encodings, default_encoding, scaling_control, default_quality, default_min_quality, default_speed, default_min_speed) IdleMixin.__init__(self, idle_timeout) InputMixin.__init__(self) AVSyncMixin.__init__(self, av_sync) ClientDisplayMixin.__init__(self) WebcamMixin.__init__(self, webcam_enabled, webcam_device, webcam_encodings) self.ordinary_packets = [] self.disconnect = disconnect_cb self.socket_dir = socket_dir self.unix_socket_paths = unix_socket_paths self.log_disconnect = log_disconnect self.idle_add = idle_add self.timeout_add = timeout_add self.source_remove = source_remove self.setting_changed = setting_changed # network constraints: self.server_bandwidth_limit = bandwidth_limit #these statistics are shared by all WindowSource instances: self.statistics = GlobalPerformanceStatistics() self.init() # ready for processing: protocol.set_packet_source(self.next_packet)
def test_clientdisplay(self): from xpra.server.source.clientdisplay_mixin import ClientDisplayMixin x = ClientDisplayMixin() x.init_state() assert x.get_info() c = typedict() x.parse_client_caps(c) assert x.get_info() x.cleanup() assert x.get_info()