-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DO NOT MERGE] RFC: corba: allow selecting dispatchers per-channel #227
base: master
Are you sure you want to change the base?
Conversation
As soon as we assume that these methods must be thread safe, we cannot guarantee that no other thread will try a Get, Acquire or Release while another is deleting the mutex. We could possibly have a fairly complex refcounting scheme to allow for deletion, but I would rather just leave the singleton mutex live. If static C++ initialization rules were not so complicated, the mutex would probably be a global variable anyways.
At this stage, this has NOT been thoroughly tested. I've used it on a local machine, but never on production. The goal is to get comments, and possibly more testers. |
Could you elaborate a bit on your motivation? Clearly, it can be a solution for the issue reported in #248 and would allow fine-grained control for power users. But there might also simpler solutions which do not require the user to configure dispatchers manually, like:
|
I would prefer to not re-use the Could we instead add a new field to the ConnPolicy struct or add a PropertyBag field to pass arbitrary transport-specific connection properties (with deep-copy semantics)? Such a field can also serve other use cases, like #218, and can nicely be integrated in the deployer's XML configuration based on property marshalling. |
Motivation:
|
This PR implements the main idea I had for a while on how to separate communication domains under the CORBA transport.
By default, the policy is the same than the one being used now: there's one dispatcher per task context. However, one can set a policy's name_id to pick a different dispatcher, possibly sharing dispatchers between tasks (how dispatchers are allocated becomes a system builder's concern).