comparison libervia/backend/tools/common/data_format.py @ 4240:79c8a70e1813

backend, frontend: prepare remote control: This is a series of changes necessary to prepare the implementation of remote control feature: - XEP-0166: add a `priority` attribute to `ApplicationData`: this is needed when several applications are working in a same session, to know which one must be handled first. Will be used to make Remote Control have precedence over Call content. - XEP-0166: `_call_plugins` is now async and is not used with `DeferredList` anymore: the benefit to have methods called in parallels is very low, and it cause a lot of trouble as we can't predict order. Methods are now called sequentially so workflow can be predicted. - XEP-0167: fix `senders` XMPP attribute <=> SDP mapping - XEP-0234: preflight acceptance key is now `pre-accepted` instead of `file-accepted`, so the same key can be used with other jingle applications. - XEP-0167, XEP-0343: move some method to XEP-0167 - XEP-0353: use new `priority` feature to call preflight methods of applications according to it. - frontend (webrtc): refactor the sources/sink handling with a more flexible mechanism based on Pydantic models. It is now possible to have has many Data Channel as necessary, to have them in addition to A/V streams, to specify manually GStreamer sources and sinks, etc. - frontend (webrtc): rework of the pipeline to reduce latency. - frontend: new `portal_desktop` method. Screenshare portal handling has been moved there, and RemoteDesktop portal has been added. - frontend (webrtc): fix `extract_ufrag_pwd` method. rel 436
author Goffi <goffi@goffi.org>
date Sat, 11 May 2024 13:52:41 +0200
parents 4b842c1fb686
children 0d7bb4df2343
comparison
equal deleted inserted replaced
4239:a38559e6d6e2 4240:79c8a70e1813
126 if k[len(name)] != sep: 126 if k[len(name)] != sep:
127 continue 127 continue
128 else: 128 else:
129 yield k[len(name) + 1 :], v 129 yield k[len(name) + 1 :], v
130 130
131 def serialise(data): 131
132 def serialise(data: Any) -> str:
132 """Serialise data so it can be sent to bridge 133 """Serialise data so it can be sent to bridge
133 134
134 @return(unicode): serialised data, can be transmitted as string to the bridge 135 @return: serialised data, can be transmitted as string to the bridge
135 """ 136 """
136 return json.dumps(data, ensure_ascii=False, default=str) 137 return json.dumps(data, ensure_ascii=False, default=str)
137 138
138 def deserialise(serialised_data: str, default: Any = None, type_check: type = dict): 139
140 def deserialise(
141 serialised_data: str,
142 default: Any = None,
143 type_check: type = dict
144 ) -> Any:
139 """Deserialize data from bridge 145 """Deserialize data from bridge
140 146
141 @param serialised_data(unicode): data to deserialise 147 @param serialised_data(unicode): data to deserialise
142 @default (object): value to use when serialised data is empty string 148 @default (object): value to use when serialised data is empty string
143 @param type_check(type): if not None, the deserialised data must be of this type 149 @param type_check(type): if not None, the deserialised data must be of this type