Commit graph

138 commits

Author SHA1 Message Date
Erik Boasson
95f070d097 cleanup_defrag need not inspect any readers when all readers are in sync
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-04 10:49:21 +01:00
Erik Boasson
4cc7fac8bc clean up tracing for SPDP messages in when discovery category is enabled, but not full tracing
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-04 10:49:21 +01:00
Erik Boasson
c60f4fb797 be consistent in generating the hash for the key value for keyless topics
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-04 10:49:21 +01:00
Erik Boasson
c61c880fd2 make proxy reader/writer references to sertopics properly counted, strong references
without this, deleting the last reader/writer that references the topic results in a dangling pointer ... but there is another intriguing solution: erase the topic from the proxy reader/writer when the last matching local one disappears, so that the topic completely disappears. I rather like this second solution, but I am not yet sure of the consequences and the first (implemented one) is such a simple change that fixes a real problem that it is a no-brainer

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-03 17:30:25 +01:00
Erik Boasson
52a0751055 fix leaking of address sets in network partitions
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 16:43:42 +01:00
Erik Boasson
23972aa8f7 change the way WHC state is passed round in the transmit path to allow tighter assertions and silencing of warnings from clang's static analyzer
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 15:03:21 +01:00
Erik Boasson
ed06ab8f4b trivial modifications to pacify gcc -O2 and clang --analyze
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 15:03:20 +01:00
Erik Boasson
b70e88c16f change initialization of AVL trees to avoid "strict prototype" warnings
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 15:03:19 +01:00
Erik Boasson
9f51c44e50 Avoid deadlock on publication-matched listener invocation
This addresses the deadlock of #41 but leaves another issue open: sequencing of listener invocations on publication/subscription matched events: there is a risk that the "unmatch" even precedes the "match" event from the application perspective, even though it is quite unlike in practice. Various ways of addressing it exist, but it looks like sequencing at the level of the "dds" entities suffers from similar risks. So better to just avoid the deadlock for now.

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
ca99fd10aa Refactor handling of an SPDP-republish event
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
0064def595 Set cover in address set generation used a temporary that was too large by a factor of sizeof(void*)
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
c491f321dd Fix incorrect free of unicast socket/connection in rtps_init error handling
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
27913be1c3 Fix memory leak in function to clear all writer address sets
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
0b814df584 Use sizeof(sin_addr) in IPv4 address compare instead of effectively sizeof(size_t)
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
d6306bddbb Properly handle "incompatible if unrecognized" in parameter lists (#79)
Previously it would fall through and assert in a debug build or return an error in a release build. The behaviour in a release build was almost correct, as the flag means the entity should be completely ignored if the parameter is not understood by the implementation, but I don't believe it should result in a warning — certainly not that claims the parameter list is invalid. A specific return code is now used to indicate a parameter list that was rejected because of this flag, and that suppresses the warning.

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
e0d5587639 Unified key-to-iid map means a backref to the map is no longer needed
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-01-02 12:13:40 +01:00
Erik Boasson
781c644800 participants are not hidden built-in entities in built-in topics and should get an instance handle consistent with the DCPSParticipant topic
Signed-off-by: Erik Boasson <erik.boasson@prismtech.com>
2019-01-01 18:52:27 +01:00
Erik Boasson
179a35d192 fix race conditions in instance id-to-key lookup
this is just an intermediate step: firstly, iid-to-key lookup is a linear scan; secondly, the lookup should happen on the RHC or the WHC and not on some internal map to associates key values with instance handles and is independent of entities

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-25 12:40:05 +01:00
Erik Boasson
1a0fcea0c2 replace old builtin topics by new ones and add implementation of DCPSSubscription and DCPSPublication
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Erik Boasson
78d49b52a0 add new "builtin topic" types and conversion routines
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Erik Boasson
e631567c35 extend sertopic interface and move the concept of a type descriptor to just the sertopic definition
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Erik Boasson
c169df6227 fix refcount leak of tkmap instances when copying transient-local history from a local writer
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Erik Boasson
ef65101ad7 pushing released serdata:s onto a freelist was dropped by accident in the rewriting of them
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Erik Boasson
29f542b916 iid and tkmap are integral to this DDSI stack and should be part of it
They were made available from the DCPS layer to DDSI using some function pointers, but it makes more sense to have them as part of the DDSI core.

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-12-14 14:02:08 +01:00
Jeroen Koekkoek
1cf03332ca Simplify logging and remove unwanted functions from abstraction layer
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-11-30 23:42:19 +01:00
eboasson
2e2224daea
Merge pull request #31 from eboasson/builtintopics
Refactor sample representation (along with a few small other details)
2018-11-09 12:23:47 +01:00
Erik Boasson
8ba218dca8 dissociate WSAEvent from sockets handled on dedicated threads
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-11-05 16:00:41 +01:00
Erik Boasson
e3874c3c27 add some missing details in comments for serdata operations
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-29 21:04:26 +08:00
Erik Boasson
b34cbdcf0c sockaddr_compare should really be ipaddr_compare
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-29 13:38:16 +08:00
Erik Boasson
f2f436bde3 wrap indirect calls to WHC in inline functions
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-29 13:28:19 +08:00
Erik Boasson
3e343d032a reduce dependency on sertopic->status_cb_entity
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-29 13:26:24 +08:00
Erik Boasson
7cb80e7851 minor refactor of CDR-to-key/keyhash generation
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-29 13:24:07 +08:00
Erik Boasson
259e4676dc fix sequencing of internal liveliness monitoring and rtps init/term
liveliness monitoring requires rtps stack initialised if initially deaf, so starting the monitoring thread must happen after rtps_init

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-28 13:54:17 +08:00
Erik Boasson
9cab5e769c various interconnected changes for ddsi_serdata
- topic-erased key-only serdata for use in tkmap
- restoration of including key values in invalid samples
- special handling of keyless topics
- keyhash generation via streams
- elimination of dynamically allocated buffers in keyhash
- removal of the last vestiges of "serstate"

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-28 13:31:23 +08:00
Erik Boasson
fd931a2605 remove accidental return statement on the return of a void function
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-26 20:32:47 +08:00
Erik Boasson
e841e4bf94 add back in the broken filter and query condition support
the implementation was and is terrible, but without it too many tests fail

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-26 20:05:18 +08:00
Erik Boasson
791a0efe7e replace some implementation dependent types in protocol message specifications
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-26 16:26:30 +08:00
Erik Boasson
a25f683bcf abstract the internal representation of a sample
besides the old state being in dire need of cleaning up, this also paves the way for having any number of different sample representations in the system

Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-26 16:25:26 +08:00
Jeroen Koekkoek
8fc9535316 Terminate address filter with OS_AF_NULL instead of 0 (AF_UNSPEC)
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-10-24 22:32:27 +02:00
Jeroen Koekkoek
25198e565b Rename os_sockaddr_size to os_sockaddr_get_size for consitency
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-10-24 15:53:29 +02:00
Jeroen Koekkoek
6b41dada9d Fix compiler warnings
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-10-19 17:35:08 +02:00
Jeroen Koekkoek
7ba3bca087 Change socket function signatures to use os_sockaddr
* Consolidated and cleaned up some (duplicate) functions.
* Removed some unused functions that did not make sense to keep around.

Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-10-19 17:00:15 +02:00
Jeroen Koekkoek
458b1df3f7 Replace os_sockQueryInterfaces by os_getifaddrs
Signed-off-by: Jeroen Koekkoek <jeroen@koekkoek.nl>
2018-10-19 16:58:40 +02:00
Erik Boasson
bb92294f4e Let dds_create_participant determine domain id if config specifies "any" (new default)
Note: DDS_DOMAIN_DEFAULT with a configuration specifying "any" results in domain 0.
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-10-14 14:02:47 +08:00
Erik Boasson
feb5ba647e handle threads stopping while trying to get a stack trace
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00
Erik Boasson
30fe3dc803 disable multicast when selected interface doesn't support it
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00
Erik Boasson
5edd55bc64 when closing trace file check for stdout or stderr
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00
Erik Boasson
d76a537bb6 explicitly initialising all fields of struct msghdr instead of memset saves a noticeable amount of time
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00
Erik Boasson
4f0b9cb471 improve performance by allowing multiple receive threads and avoiding multiplexing I/O
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00
Erik Boasson
508d56b427 should not reschedule SPDP event if there is no SPDP writer
Signed-off-by: Erik Boasson <eb@ilities.com>
2018-09-21 11:00:43 +02:00