[Libreoffice] UPR local host problem

Paul TOTH tothpaul at free.fr
Mon Jan 2 04:56:34 PST 2012

Le 02/01/2012 16:43, Stephan Bergmann a écrit :
> On 01/02/2012 12:37 PM, Paul TOTH wrote:
>> Hi,
>> Le 02/01/2012 14:21, Stephan Bergmann a écrit :
>>> On 01/02/2012 11:06 AM, Paul TOTH wrote:
>>>> does anyone know the URP protocol ?
>>>> I've found very few information about it
>>>> http://wiki.services.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol 
>>> But that's as detailed as you can reasonably expect it to be? ;)
>>> Anyway, I assume your problem is higher up the abstraction hierarchy
>>> than plain URP. If there were problems establishing localhost
>>> connections, you would get problems already before reaching the
>>> loadComponentFromURL call.
>> Well I havent' found any document on how the IDs (like
>> 1e3ad60;uno[0];18b8;85f8da80603b478cb08cd837553b7f6d) are defined...so
>> I've used Windows GUID to identify my objects instances.
> Ah, it had escaped me that you implemented an URP end-point of your 
> own.  How such IDs are generated is indeed unspecified.  See also 
> <https://issues.apache.org/ooo/show_bug.cgi?id=32547> "Missing 
> Specification to Guarantee Unique URP Thread IDs."

I've notice some strange behaviors when using a predefined ThreadID like 
"RemoteOffice-ThreadID", on a first request, everything is fine, but 
some objects OIDs seems to be persistant event after the socket 
deconnexion. I guess when they are cleared ?! So I use a unique one now.

>> my application is a single thread process, after the protocol handcheck,
>> I send a request a read answers until I get my own threadID back,
>> something like :
>> send_my_request(my_thread_id);
>> while (get_reply->thread_id != my_thread_id) process_server_request();
>> process_server_reply();
> Are you sure that you would handle scenarios correctly where the 
> remote side sends back requests on the same thread ID while you are 
> waiting for a reply?

well, I'm not sure how Office is done, but from the tests I've made :
- with XInitialize the server do not send any request
- with an XInputStream the server request some interfaces like 
XSeekable, XCloseable,  call some methods (seek, readsomeBytes...) but 
this is done on an other thread, and then the XComponent OIDs is send on 
the main ThreadID.

> Stephan

More information about the LibreOffice mailing list