Open GoogleCodeExporter opened 9 years ago
The solution for this issue will have a direct impact on the Common API C++
project (http://projects.genivi.org/commonapi). The corresponding changes to
Common API C++ will have to be available at early September 2013 in order to
meet the deadline for the GENIVI Gemini release (scheduled October 2013).
Original comment by klaus.birken@gmail.com
on 12 Jun 2013 at 2:40
After discussing with some more stakeholders it seems like proposal 2 (see
attachment "selectiveBroadcastConcept.fidl") is the most promising one, with
some extensions from proposal 3.
Proposal 1 requires some central service. This has drawbacks in case of
distributed systems - what does "central" mean in that case?
Proposal 3 is quite explicit in the IDL, although a big part of the
functionality can be defined by convention for the underlying middleware (e.g.,
Common API C++ on D-Bus).
Current proposal (derived from proposal 2):
a) Whenever a client subscribes for a selective broadcast the middleware on the
service side will keep a list of the middleware ids of the subscribed clients.
b) There will be an API which the service can use to access that subscription
list. The list should be ordered according to the order of subscription.
c) The service can use an extra mechanism to map the middleware ids to generic
names. The mapping could be provided as config file or deployment model.
d) If needed, the interface may specify a method which allows the client to
provide additional information which might be used by the server to determine
the actual broadcast receivers. This feature is derived from proposal 3 (this
is kind of a register-method, but without a mandatory ClientId parameter).
However, there is no special IDL support, as this feature is located on the
application level.
f) Franca IDL is not modified for this solution.
It has been pointed out that the solution should support dynamic registration
of clients during runtime (i.e., late after start-up time). It should be
possible to register new clients even if the server doesn't know about them. In
the proposal above, the service has up to three possibilities to select its
broadcast targets (or combination of those):
1. select clients based on the order of subscription (limited expressivity)
2. select clients based on their generic names from a config file or deployment
model (even possible for clients which are not known at configuration time if
pattern-based matching is used)
3. select clients based on the additional information provided by the client
via an optional register-method (see (d))
Original comment by klaus.birken@gmail.com
on 20 Jun 2013 at 10:19
An additional proposal 4, extending proposal 3 and making session management
shared is attached.
Original comment by scha...@itestra.de
on 20 Jun 2013 at 11:15
Attachments:
In a conf call on 2013-06-28 with the developers of Common API C++ we decided
to start with the solution described in comment #2. I.e. the Common API
middleware will support the selective-keyword without any further IDL
extensions. The reference part of the Franca User Guide will be extended to
describe the semantics of the selective-flag thoroughly.
The register-functionality of Common API will be available for review and tests
to a larger audience. If it turns out that Franca IDL could support the use
cases targeted here better by adding more IDL features, we can do this in a
second step and learn from the actual implementation by Common API. The
corresponding reviews and discussions will be done in the GENIVI context. If
you are not a GENIVI member and want to contribute nevertheless, pls add
yourself to the cc list of this issue and participate in the Franca Google
Group.
The actual task which should be done for this issue is the extensions needed
for the User Guide.
Original comment by klaus.birken@gmail.com
on 1 Jul 2013 at 9:47
This is a task for updating the User Guide, switched milestone accordingly.
Original comment by klaus.birken@gmail.com
on 1 Aug 2013 at 8:36
Original comment by klaus.birken@gmail.com
on 30 Jul 2014 at 8:34
Original issue reported on code.google.com by
klaus.birken@gmail.com
on 10 May 2013 at 2:19Attachments: