Closed Bug 716631 Opened 13 years ago Closed 6 years ago

IPDL compiler gets confused about C++ manager type for multi-managed protocols

Categories

(Core :: IPC, defect)

defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: ajuma, Unassigned)

References

Details

In a 'manages' hierarchy, declaring the top-level protocol as 'sync' (rather than 'rpc') causes a compile-time error even when this protocol only has sync messages. See Bug 711168, Comment 9 for an example of this problem.
The problem here is that the IPDL compiler chooses the C++ manager type based on the semantics of the top-level protocol, but in the case of PLayers, there are *two* toplevel protocols above it, with different semantics. The same bug would have occurred if PContent was 'sync' and PCompositor was 'async', e.g. The C++ manager type is just an internal implementation detail. I think the right fix here is to do away with the IProtocolManager parameterization, and just use RPCListener for all channel types. We'll just RUNTIMEABORT() the methods in SyncListener and AsyncListener that shouldn't be reached.
^^^ this cjones is :warhammer in bugzilla.
Summary: IPDL compiler requires top-level protocol of 'manages' hierarchy to be declared as 'rpc' → IPDL compiler gets confused about C++ manager type for multi-managed protocols
Blocks: 809888
Hm, it seems this was fixed (in a different bug ?) I changed: intr protocol PCompositor to: sync protocol PCompositor and it builds
(In reply to Jan Varga [:janv] from comment #3) > Hm, it seems this was fixed (in a different bug ?) > I changed: > intr protocol PCompositor > to: > sync protocol PCompositor > > and it builds Going to close this based on the above.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WORKSFORME
For reference, comment #1 refers to a few things that have been removed: the different channel types for sync/async/rpc were merged in bug 901789 (although that landed a week after comment #3 was made), and more recently IProtocolManager went away as part of bug 792652. So it looks like this bug isn't possible anymore.
You need to log in before you can comment on or make changes to this bug.