"Portset is invalid" - All operation types which inherit from another operation type on the same portset must come before the base type in the portset definition.
Example
[ServicePort]
public class [MyServiceOperations] : [PortSet<]
[dssp.DsspDefaultLookup,]
[dssp.DsspDefaultDrop,]
Get,
Subscribe, <-- *** ERROR *** Subscribe is before [ReliableSubscribe]
[ReliableSubscribe,]
[MyOtherUpdate>]
{
}
*** Error: [Robotics.MyService.MyServiceOperations] Portset is invalid.
Subscribe must be preceeded by [Robotics.MyService.ReliableSubscribe.]
In this case, since
ReliableSubscribe inherits from Subscribe, the order in the portset would prevent a Reliable Subscribe handler from ever being run, since the Subscribe comes first and catches all messages for both Subscribe and
ReliableSubscribe. This was a prevalent problem in earlier code, but difficult to detect since the message is actually handled. Simply switch
ReliableSubscribe and Subscribe in the portset definition of
MyServiceOperations.
[ServicePort]
public class [MyServiceOperations] : [PortSet<]
[dssp.DsspDefaultLookup,]
[dssp.DsspDefaultDrop,]
Get,
[ReliableSubscribe,] // IMPORTANT: Because [ReliableSubscribe] inherits from Subscribe,
Subscribe, // it needs to be declared on the [PortSet] before Subscribe.
[MyOtherUpdate>]
{
}
Related Links
*
MigratingToV15 *
MSRoboticsStudio