Jump to content
OpenSplice DDS Forum


  • Content count

  • Joined

  • Last visited

About bdavis

  • Rank
    Advanced Member

Profile Information

  • Company
    Link Simulation and Training
  1. bdavis

    DDS Durability Service Linux

    Hi Harrold, I think you will find that the durability server is no longer included in the opensplice community distribution. % find $OSPL_HOME -name libdurability.so finds nothing. regards, Bud Davis
  2. bdavis

    difference between 6.4 and 6.7

    hello all, just a note to share my experience upgrading from 6.4 to 6.7. I had a bunch of unit test that use the 'no-network.ospl' file. They are run via a test framework (boost / ctest) and each executable would make a partiticipant, publishers, subscribers, etc. for each test. Tests using sequences started failing. But only the 2nd and following tests, the first test in the executable always passed. The assert that was firing was in the idlpp created code. A quick look at it showed the caching of a value that cannot be initialized correctly the second time everything was destroyed and re-created. Below is the cmake line that I used to 'fix' this, where 'fix' means give me back the behavior I had before. # This removes an optimization from the idlpp generated code that I think is wrong # and causes us ctest failures. this code is made in ospl version 6.7, and not in # previous versions. What the future holds is unknown COMMAND sed ARGS -i "s/static c_type type0/c_type type0/" ${CMAKE_CURRENT_BINARY_DIR}/include/${BASENAME}SplDcps.c\ Using static variables is always tricky, I think it is wrong but what do I know Just thought I would post this so others who experience the same kind of issue could perhaps save a bit of time. regards, Bud Davis
  3. bdavis

    Community edition older versions ?

    my experience in moving code from OSPL-5.X to OSPL-6.X is that there is one api call that has changed; the compiler will lead you by the nose to it very quickly. the only downside is the freely available version of OSPL-5 has the shared memory deployment model. i would not hesitate to just upgrade to the latest release. in all likely hood it will 'just work' with minimal effort. regards, bud davis
  4. You may experience timeouts from some dds threads when you are stopped in gdb. Provided you gdb is semi recent, 'non stop debugging' can be very helpful. gdb > set pageination off gdb >set non-stop on gdb> run This allows you to break and let the other threads continue to run. regards, Bud Davis
  5. bdavis

    CMSOAP Interface

    Is this documented anywhere? Any relation to this specification? https://www.omg.org/spec/DDS-WEB/About-DDS-WEB/ Thanks, Bud
  6. bdavis

    6.7 and apache license

    hello, looks like the licensing model has changed. from what i see, this is really no difference for people using the community edition of opensplice. if anything, it is more 'permissive'. am i missing something? regards, bud davis
  7. bdavis

    wishes and dreams (aka "i want a unicorn')

    Erik, Interesting. I have seen this project on github before, even tried to compile it, but did not go any farther. Time to give it a closer look. thanks, Bud Davis
  8. I wish, the idlpp would generate a set of serialization routines that I could use in application code. std::string to_JSON ( IdlStruct S ); IdlStruct S from_JSON ( std::string ); std::string to_XML ( idlStruct S); idlStruct S from_XML ( std::string) // and maybe some 'c' callable ones as well !! Or maybe the solution is for me to parse the idl file myself and make this. Something that would be quite handy at times. --bud davis
  9. bdavis

    Dropouts and falling behind

    I think you want BEST_EFFORT and a history depth of 1. If you miss any with these settings, then you application is not servicing the read / take often enough. suggestion, take one of the example programs (hello world is my favorite), change it to subscribe to only this topic. And make it check in a loop that runs every 10 ms. You can run this anywhere on the network. This will tell you if it is a publish or a subscriber problem. good luck, bud davis
  10. bdavis

    IDL Data Types

    Short answer. No. There is no way to send a 'pointer' across the network, because there is no way to send the data 'pointed to'. DDS Strings may do what you want. regards, Bud Davis
  11. bdavis

    dataWriter listener

    Allow me to answer my own question. along with the callback comes some status: total_count current_count current_count_change which makes it obvious why you get a call on a subscribe and a call on the un-subscribe.
  12. bdavis

    dataWriter listener

    static void cb (void *listener_data, DDS_DataWriter writer, const DDS_PublicationMatchedStatus *status) { printf("i am in the publication matched callback\n"); } static void ll (void *listener_data, DDS_DataWriter writer, const DDS_LivelinessLostStatus *status) { printf("i am in the liveleness lost callback\n"); } ...................................................... // Create the Publisher's in the DDS Domain. message_Publisher = createPublisher(domainParticipant); // Request a Writer from the the Publisher. message_DataWriter = createDataWriter(message_Publisher, messageTopic); /* Allocate the DataReaderListener interface. */ msgListener = DDS_DataWriterListener__alloc(); checkHandle(msgListener, "DDS_DataWriterListener__alloc"); /* Fill the listener_data with pointers to all entities needed by the Listener implementation. */ msgListener->listener_data = 0; /* Assign the function pointer attributes to their implementation functions. */ msgListener->on_publication_matched = cb; msgListener->on_offered_deadline_missed = 0; msgListener->on_offered_incompatible_qos = 0; msgListener->on_liveliness_lost = ll; /* Attach the DataReaderListener to the DataReader, only enabling the data_available event. */ int status = DDS_DataWriter_set_listener(message_DataWriter, msgListener, DDS_PUBLICATION_MATCHED_STATUS ); checkStatus(status, "DDS_DataWriter_set_listener"); Above is the code I added to the helloworld example. Plus made both the sender and reciever run forever. I run the publisher task and the subscriber task. The callback is called one time. As expected. I ctrl-c the subscriber task, and I get another DDS_PUBLICATION_MATCHED_STATUS callback. My expectation is I would recieve DDS_LIVELENESS_LOSS callback. I have used each constant in the set_listener function, and the two or'd together. The only callback I recieve is DDS_PUBLICATION_MATCHED_STATUS, and I get one when the subscriber starts and another when it exits. What am I doing wrong ? regards, bud davis
  13. bdavis

    sequences and bounded sequences

    Question on interoperability: Let's say system A has a topic, lets call it ALPHA , with the structure defined like this: struct some_data { sequence <long> x; } And system B has a topic; lets call it ALPHA also. struct some_data { sequence<long,100> x; } Can system A and B interoperate ? It would seem safe if system A could receive from system B, but not the other way around. Why the question ? One system requires bounded memory usage. The other does not. The other currently exists. thanks, Bud Davis
  14. This is a use case that works well with opensplice. You have something simple wrong, let's go down the list: #1. Do the examples work on each machine ? check and make sure that you can send and recieve on the same machine. This eliminates source code defects from the equations. #2. Can you ping between the machines ? #3. Ensure the firewalls are disabled. Both sides. #4. Check the 'ospl.xml' files ? Are they identical in all respects except for the network address ? #5. Don't use AUTO, specify the address. #6. Use tcpdump / wireshark. You should see traffic from the other machine when you start the process. It will work, just check these things. regards, Bud Davis
  15. bdavis

    include files in idlpp

    What I want to do: In the file top_level.idl #include "bill.idl" module fred { struct a { long i; }; #pragma keylist a }; In the file bill.idl module bill { struct z { long i; }; #pragma keylist z }; /usr/local/opensplice/HDE/x86_64.linux//bin/idlpp -l c -S -I./ top_level.idl I expect that the functions for 'bill' will be created in top_levelSacDcps.h and friends. But it does not !! And, yes Hans, I have read the manual ! (OpenSplice DDSVersion 6.xIDL Pre-processor Guide) thanks, Bud Davis