IPDL/Getting started: Difference between revisions

Ctor/dtor declarations must be in IPDL for managing protocol.
(Clarified the behaviour of blocking actors)
(Ctor/dtor declarations must be in IPDL for managing protocol.)
Line 319: Line 319:
The second new statement is a "manages statement."  Here we declare that the Plugin protocol manages the PluginInstance protocol (which is defined in the included "PluginInstance.ipdl" specification).  This means that the Plugin protocol must provide a "constructor" and "destructor" for PluginInstance actors; these are akin to factory methods.  The "manages" statement also means that PluginInstance actors are tied to the lifetime of the Plugin actor that creates them --- that is, once the Plugin actor dies, all the PluginInstances become invalid.
The second new statement is a "manages statement."  Here we declare that the Plugin protocol manages the PluginInstance protocol (which is defined in the included "PluginInstance.ipdl" specification).  This means that the Plugin protocol must provide a "constructor" and "destructor" for PluginInstance actors; these are akin to factory methods.  The "manages" statement also means that PluginInstance actors are tied to the lifetime of the Plugin actor that creates them --- that is, once the Plugin actor dies, all the PluginInstances become invalid.


The third and fourth new statements are "constructor" and "destructor" message declarations.  The syntax was borrowed from C++, but the semantics are very different.  First of all, constructors and destructors have a direction, like other IPDL messages.  They also can have arbitrary parameters and return values, and can additionally have any IPDL messaging semantics.  For now, you'll have to take our word that this is useful.  The reason for constructors and destructors behaving like other messages will be explained below.
The third and fourth new statements are "constructor" and "destructor" message declarations.  The syntax was borrowed from C++, but the semantics are different.  The first difference is that constructors and destructors have a direction, like other IPDL messages.  They also can have arbitrary parameters and return values, and can additionally have any IPDL messaging semantics.  Take our word that this is useful; the reason that constructors and destructors behave like other messages will be explained below.
 
Managed protocols require constructor and destructor declarations.  The IPDL compiler ensures this.  The constructor declaration for a managed protocol must appear in the managing protocol's IPDL file.  Similarly for the destructor declaration.


Constructors and destructors turn into C++ interface methods that are almost the same as other IPDL interface methods generated for message declarations, with one notable exception: the implementing C++ class must provide actual methods for allocating and deallocating the sub-protocol actors.  This is shown below.
Constructors and destructors turn into C++ interface methods that are almost the same as other IPDL interface methods generated for message declarations, with one notable exception: the implementing C++ class must provide actual methods for allocating and deallocating the sub-protocol actors.  This is shown below.
31

edits