feat: Rewrite parameter and cli arguments handling in Rosbridge server #1060
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Let's be honest here. The way parameters are passed down from rosbridge_server to the Rosbridge protocol and internal classes is a complete mess:
Protocol.parameters
dictionary.This PR contains the following modifications:
Protocol
class now allows passing the parameters through the constructor instead of class variableprotocol.parameters
upon initialization (No need to settopics_glob
class variables) and use instance variables to get them later (e.g.self.topics_glob
instead ofAdvertise.topics_glob
).protocol.parameters
dictionary contains the keys.argparse
for parsing cli arguments (less boilerplate code and more user-friendly interface)protocol_parameters
is set inRosbridgeWebSocket
handler, no need to create it on every opened connectionactions_glob
parameterSome changes in behavior:
max_message_size
actually has effect now, that is, even when client sets thefragment_size
, the actual fragment size is capped tomax_message_size
value.What's left to do:
binary_encoder
andbson_only_mode
.Even though this is still WIP, I would appreciate a review