DCCL messages not compiling.

Asked by Jake Quenzer

I am no longer able to compile the ".proto" files used for defining DCCL messages. I believe this is a result of changes made in the v2.0.2 release. This may not be a bug, rather a change in the way the message files should be formatted or something. However, even using "analyze_dccl" fails on the Simple.proto file with the following errors:

libprotobuf ERROR google/protobuf/descriptor.cc:2245] Simple.telegram: Option "(goby.field).dccl" unknown.
libprotobuf ERROR google/protobuf/descriptor.cc:2245] Simple: Option "(goby.msg).dccl" unknown.
failed to read in: Simple.proto

Please advise.
Thank you.

Question information

Language:
English Edit question
Status:
Answered
For:
Goby Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
toby schneider (tes) said :
#1

Hi -

The pre-release versions of DCCL used "(goby.msg).dccl" and "(goby.field).dccl" option extensions. In the final release (for a variety of reasons), this was changed to "(dccl.msg)" and "(dccl.field)" respectively. Please see the examples at http://gobysoft.org/doc/2.0/acomms_dccl.html

Sorry for the confusion.
-t

Revision history for this message
Jake Quenzer (jakeq) said :
#2

Thank you for the explanation.

Looking back I see that the release notes indicate DCCL had been refactored, but I don't see an indication that all existing Protobuf messages in a project would need to be reconfigured as a result. Aside from the changelog, was there some place I should have looked for a listing of such changes that would require reconfiguration?

In general, I am concerned about the functionality of project materials that were compiled/written based on pre-release versions of DCCL. For example, skimming the updated DCCL how-to, I see that there is now a DCCL ID assignment table. I may be wrong but I do not remember this table existing when our Protobuf message files were written last summer. The existence of the table suggests that certain ID's are now reserved and imply a certain message type. Will Protobuf messages using these reserved ID numbers behave differently than they did before? If not, under what circumstances should one take the ID assignment table into consideration?

Thank's again for your responses and explanations,
-Jake

Revision history for this message
toby schneider (tes) said :
#3

The changelog is the place to look, but you should expect not to see a breaking change like that in any future 2.0 release. Please remember that you were using a pre-release version, and I apologize for the trouble this has caused you.

The DCCL ID table (http://gobysoft.org/wiki/DcclIdTable) serves roughly the same purpose as the IANA port assignments (http://www.ietf.org/assignments/service-names-port-numbers/service-names-port-numbers.txt). The goal is to allow different institutions / companies to inter-operate by assigning fixed DCCL IDs.

In other words, if Institution A chooses id 22 for one message, and institution B chooses id 22 for a different message, they cannot interoperate in a collaborative experiment without one institution changing the ID number.

As far as DCCL is concerned, the ID number doesn't matter as long as they are consistent throughout the whole network (every ID uniquely defines a given protobuf Message). If you control all your nodes, you can assign the IDs as you wish. However, I strongly recommend using the "Private / Testing" IDs or requesting a block of assigned IDs. This way you won't run into trouble if you end up doing a collaborative experiment down the road.

Revision history for this message
toby schneider (tes) said :
#4

Also note that encoded DCCL messages from 2.0.1~rc1 and newer is binary compatible with the 2.0.2 decoder (and vice versa), it's simply the option extension names that have changed.

Can you help with this problem?

Provide an answer of your own, or ask Jake Quenzer for more information if necessary.

To post a message you must log in.