-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Support for Publishing, More Types, and Basic QoS #30
base: master
Are you sure you want to change the base?
Conversation
Add basic support for publisher know issue : Segfault after write() call Signed-off-by: David Pierret <[email protected]>
manage sequences as list
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Add basic support for publisher know issue : Segfault after write() call Signed-off-by: David Pierret <[email protected]>
manage sequences as list
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
Signed-off-by: David Pierret <[email protected]>
- Fix cpp issue where topic_types_ private member was accessed by derived class. - Fix DataWriter python class issue where the datawriter used datareader_wait_for cpp binding.
- DataWriter and Publisher classes should not have a listener member. - QoS still can be passed, but QOS_DEFAULTs are always used in cpp binding methods.
- Dash separation in label will be deprecated, use underscore instead
- DataWriter and DataReader wait_for methods does not use WaitSet dispatch. A simple while loop is used to check status conditions, and the STL current thread sleep is used to wait. - DataRead take_next_sample does not perform his own wait but try immediately perform library call to take_next_sample.
- When checking limits of floating value with cpp STL library, min() returns the minimum positive representable value, lowest() must be used instead.
- Each supported type defined in IDL imports now the whole module name at once (importing the root and browsing into submodules resulted into a NULL value and an exception).
- When a module has a type which is defined into a parent module, the type is not found. Imports are now done properly. - To investigate: Two Exceptions are now disabled in cpp bindings because the conditions seems not be required.
- DomainParticipant pointers were created with a factory, and then deleted with the help of SharedPointer (aliased to DomainParticipant_var). Mixing rough ptrs and shared ptrs causes troubles and the factory should now be responsible for the deletion of the participants.
- The IDL generated classes use Polymorphism (e.g: sequence type that directly derived from list). A simple call to Py_IsInstance() was not suffiscient and the exception was thrown (and unhandled) even though the case of the derived class should work.
- separate user.hpp and common.hpp into subfiles. - cpp/hpp files use now four spaces indentation
Signed-off-by: David Pierret <[email protected]>
…Supports # Conflicts: # pyopendds/dev/include/pyopendds/user.hpp
…Supports # Conflicts: # pyopendds/DataWriter.py # pyopendds/Publisher.py # pyopendds/dev/include/pyopendds/user.hpp # pyopendds/dev/itl2py/CppOutput.py # pyopendds/dev/itl2py/PythonOutput.py # pyopendds/dev/itl2py/ast.py # pyopendds/dev/itl2py/templates/user.cpp # pyopendds/dev/itl2py/templates/user.py # pyopendds/ext/_pyopendds.cpp # tests/basic_test/publisher.py
…Supports # Conflicts: # pyopendds/dev/include/pyopendds/user.hpp
(Reverse commit so that we mark the merging resolved as rejected).
Dev type supports
- pyidl supports multiple .idl files embed in one packages, related or not with include preprocessor directive
Verify if listener as None on DataReader add update datawriter Testing working well 👌
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Sdpierret @swolferDF I'd appreciate it if there were no more PRs that are based on commits from existing PRs. I know I've been very slow at getting back to reviewing, but creating new ones like this doesn't help me do this any faster. In the future please base new feature PRs off of the master
branch if possible. I'm closing the other two and assuming this one is the one to review going forward.
This is a lot to go through, so in addition to the things I marked here are some general remarks:
- Please revert the unnecessary style changes in the C++ code.
- As part of this please remove and create a new PR for this
pyidl
command that is based onmaster
since it doesn't seem related to QoS or any of the previous PRs. When you do this please also describe what the use cases for it are because I'm right now I'm still not sure what it's purpose is even after reading the description for it. - There are a number of TODO comments and commented out code added. Please resolve or remove them or add more details to the TODO comments if you don't think they're issues that have to be immediate addressed.
- There are conflicting files, please ether rebase or merge in
master
to resolve the conflicts. - This isn't an issue now, but just to warn you the plan was and still is to generate QoS and other parts of the DDS API at least partially from the DDS IDL in OpenDDS. So the way the QoS works might be slightly different in the future.
After this is all done and the diff is smaller I will do a more detailed review.
@@ -195,6 +195,7 @@ def __init__(self, base_type, dimensions): | |||
|
|||
def accept(self, visitor): | |||
visitor.visit_array(self) | |||
pass |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this a reason to add pass
?
template<typename T> | ||
class BooleanType { | ||
public: | ||
static PyObject* get_python_class() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C++ code should follow OpenDDS' C++ style which has two space indents.
* Set default transport and discovery to RTPS unless default_rtps=False was | ||
* passed. | ||
*/ | ||
* init_opendds_impl(*args[str], **kw) -> None |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please reverse all the places where this was done to multiline comments. There's no reason for this.
# add_library(airbus_idl SHARED) | ||
# if(${CPP11_IDL}) | ||
# set(opendds_idl_mapping_option "-Lc++11") | ||
# endif() | ||
# OPENDDS_TARGET_SOURCES(airbus_idl "airbusdds.idl" | ||
# OPENDDS_IDL_OPTIONS "-Gitl" "${opendds_idl_mapping_option}") | ||
# target_link_libraries(airbus_idl PUBLIC OpenDDS::Dcps) | ||
# export( | ||
# TARGETS airbus_idl | ||
# FILE "${CMAKE_CURRENT_BINARY_DIR}/airbus_idlConfig.cmake" | ||
# ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove?
# add_library(airbus_idl SHARED) | |
# if(${CPP11_IDL}) | |
# set(opendds_idl_mapping_option "-Lc++11") | |
# endif() | |
# OPENDDS_TARGET_SOURCES(airbus_idl "airbusdds.idl" | |
# OPENDDS_IDL_OPTIONS "-Gitl" "${opendds_idl_mapping_option}") | |
# target_link_libraries(airbus_idl PUBLIC OpenDDS::Dcps) | |
# export( | |
# TARGETS airbus_idl | |
# FILE "${CMAKE_CURRENT_BINARY_DIR}/airbus_idlConfig.cmake" | |
# ) |
PrimitiveType.Kind.byte: ('UByte', 'UByte(0x00)'), | ||
PrimitiveType.Kind.u8: ('UByte', 'UByte(0x00)'), | ||
PrimitiveType.Kind.i8: ('Byte', 'Byte(0x00)'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not use int
for uint8
and int8
?
struct MySample2 { | ||
@key string a_string; | ||
double a_double; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file and a few others are missing the final newline at the end. Github shows this as a red marker at the end of the file.
Finishing support Qos
Testing with PES good result
I changed :