Help with .NET UNO Bridges for LibreOffice

Stephan Bergmann stephan.bergmann at allotropia.de
Thu Aug 15 06:07:21 UTC 2024


On 8/15/24 05:42, Ritobroto Mukherjee wrote:
> So to clarify, every thread has an UNO generated ID, independent of
> its OS thread ID. Is this thread ID unique across a bridge or only
> unique in a process/environment?

yes, see 
<https://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol#Threads> 
(though I can't remember how LO's URP implementations compute those 
globally unique TIDs; one would need to look into the code)

> What I can get from the code is that UNO Threads are modeled as a pair
> of JobQueues, one sync and one async, managed by the ThreadPool. Is
> this correct?
[...]
> And I assume the asynchronous calls are similar but without a "done"
> blocking job?

Yeah, async messages complicate the picture somewhat.  In olden times, 
UNO had a concept of [oneway] interface methods (that had to have a void 
return type, and don't do a response message over URP, and can be 
executed on top of another synchronous execution job that is currently 
calling out to another environment and is thus blocked waiting for a 
response).  But today, the only remaining async operation in URP is the 
XInterface release operation, see 
<https://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol#The_release_Message>.

> That's because the older implementation in cli_ure/ uses a Microsoft
> specific extension to C++ called C++/CLI, which allows seamless
> interop between C++ and C#. This is however not cross-platform and
> hence needs to be replaced with a combination of standard C++ and C#
> to achieve cross-platform bridging for the GSoC project.

Ah, that's useful information.



More information about the LibreOffice mailing list