Opened 5 months ago

Closed 5 months ago

#861 closed enhancement (fixed)

loc_xxx service registration should be compostitional

Reported by: Jiri Svoboda Owned by: Jiri Svoboda
Priority: major Milestone: 0.13.1
Component: helenos/unspecified Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:

Description

Currently to register one or more service with location services, one needs to call loc_server_register(server_name) exactly once,
then call loc_service_register(service_name) one or more times.

This makes it impossible for two, independent components in the same task to register services. For example, a library (libui, DDF, libc) cannot register services on its behalf without interfering with the main program or another library.

Note that this is just an API problem and fixing it should not require any fancy changes to IPC mechanisms.

Change History (3)

comment:1 by Jiri Svoboda, 5 months ago

I realized that to get a fully compositional server one also needs the async registration to be compositional and need to make the connection between the client and the proper server component.

Currently it is not possible to create individual endpoints and register them with location service. The task as a whole is registered. With the current implementation of async ports, however, one can register multiple different interface types with handlers, independently. When the client is connecting, they specify the required interface type, which will enable the servers' async framework to route the request to the right server component.

This is not elegant and it requires that no two components must register the same interface type. The correct solution is to be able to create and register individual endpoints via location service, though.

It works as a stop-gap though. And if we make loc_server_register()/loc_service_register() compositional, we can make services at least somewhat compositional.

An example where this would work is libui() registering for color change notification and the main application being a virtual KVM registering virtual keyboard, video and mouse services (as they use different interface type from the one used by libui).

Last edited 5 months ago by Jiri Svoboda (previous) (diff)

comment:2 by Jiri Svoboda, 5 months ago

Owner: set to Jiri Svoboda
Status: newaccepted

comment:3 by Jiri Svoboda, 5 months ago

Milestone: 0.13.1
Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.