Commit Graph

499 Commits

Author SHA1 Message Date
Jason Rhinelander 53443bbc31
Merge remote-tracking branch 'origin/dev' into stable 2022-05-30 13:13:52 -03:00
Jason Rhinelander fd95919704
Merge pull request #77 from jagerman/private-linking
Fix use of parent oxenc::oxenc target
2022-05-30 13:13:17 -03:00
Jason Rhinelander 4671af3ca0
Fix use of parent oxenc::oxenc target
oxen-mq's export command errored when using a parent oxenc target in a
submodule oxen-mq; add an intermediate IMPORTED target so that cmake
knows it doesn't have to export the oxenc dependency as well.
2022-05-30 13:07:49 -03:00
Jason Rhinelander f1049a2b05
1.2.12 release 2022-05-30 11:13:59 -03:00
Jason Rhinelander 356d9716c4
Rediff patches 2022-05-30 11:13:57 -03:00
Jason Rhinelander ba1029bf88
Merge remote-tracking branch 'origin/stable' into ubuntu/jammy 2022-05-30 11:13:55 -03:00
Jason Rhinelander 22ee33cea8
new gbp compatibility 2022-05-30 11:13:11 -03:00
Jason Rhinelander 930a56d6bb
Merge remote-tracking branch 'origin/dev' into stable 2022-05-30 10:52:04 -03:00
Jason Rhinelander c4b7aa9b23
Merge pull request #76 from jagerman/optimizations
Optimizations
2022-05-30 10:51:40 -03:00
Jason Rhinelander 115c5550ca
Bump version & embedded oxenc version 2022-05-24 16:15:39 -03:00
Jason Rhinelander ace6ea9d8e
Avoid unnecessary nullptr assignment
We can just leave the dangling pointer value in the `run` object: even
though we just deleted it, there's no need to reset this value because
it will never be used again.  (And even if we did, we don't check
against nullptr anyway so having a nullptr here doesn't make anything
safter than a dangling pointer).

The assignment (into the variant) uses a small amount of CPU (via
std::variant), so better for performance to just leave it dangling.
2022-05-12 12:48:46 -03:00
Jason Rhinelander 62a803f371
Add missing header
This was surely coming in implicitly already, but better to be explicit.
2022-05-12 12:48:15 -03:00
Jason Rhinelander d86ecb3a70
Use fixed vector for idle workers
Use a count + fixed size vector with a separate variable tracking the
size seems to perform slightly better than popping/pushing the vector.
2022-05-12 12:44:54 -03:00
Jason Rhinelander 45791d3a19
Use fixed array for known-small internal messages
Internal messages (control messages, worker messages) are always 3 parts
or less, so we can optimize by using a stack allocated std::array for
those cases rather than needing to continually clear and expand a heap
allocated vector.
2022-05-12 12:42:08 -03:00
Jason Rhinelander b8e4eb148f
Use raw index bytes in worker router
Change the internal worker routing id to be "w" followed by the raw
integer bytes, so that we can just memcpy them into a uint32_t rather
than needing to do str -> integer conversion on each received worker
message.

(This also eliminates a vestigal call into oxenc internals).
2022-05-12 12:38:13 -03:00
Jason Rhinelander fa6de369b2
Change std::queue to std::deque typedef
This shouldn't make any difference with an optimizing compiler, but
makes it easier a bit easier to experiment with different data structures.
2022-05-12 12:32:17 -03:00
Jason Rhinelander 371606cde0
Eliminate useless unordered_set
I don't know what this set was originally meant to be doing, but it
currently does nothing (except adding overhead).

The comment says it "owns" the instances but that isn't really true; the
instances effectively already manage themselves as they pass the pointer
through the communications between proxy and workers.
2022-05-12 12:25:46 -03:00
Jason Rhinelander 3a51713396
Add simpler Job subclass of Batch for simple jobs
This adds a much simpler `Job` implementation of `Batch` that is used
for simple no-return, no-completion jobs (as are initiated via
`omq.job(...)`).

This reduces the overhead involved in constructing/destroying the Batch
instance for these common jobs.
2022-05-12 12:20:51 -03:00
Jason Rhinelander 5c7f6504d2
Fix cmake compilation properties
For some reason using target_compile_features doesn't properly set up
C++17 flags in the generate compile_commands.json, which then breaks
clang-complete.  Switch to use properties instead, which works.
2022-05-12 12:15:30 -03:00
Jason Rhinelander ce90a73dee
rebuild with older arm32 cpu support 2022-04-29 18:09:44 -03:00
Jason Rhinelander b53b8b5105
Set compiler flags to enable Pi zero CPU support 2022-04-29 18:09:43 -03:00
Jason Rhinelander 5a3c12e721
Merge pull request #74 from XutaxKamay/patch-1
Fix libzmq library linking
2022-04-07 11:15:24 -03:00
xutaxkamay f0c2222d6e Fix libzmq library linking
Fixes prefix for libzmq library output path
2022-04-07 07:14:23 +02:00
Jason Rhinelander 320a85ac0c
Merge pull request #73 from jagerman/cmake-pkgconfig-workaround
Cmake pkgconfig workaround
2022-03-30 16:56:20 -03:00
Jason Rhinelander 7fca36b3a9
Use liboxenc-dev in ci jobs 2022-03-30 16:21:03 -03:00
Jason Rhinelander bbdf4af98f
cmake work-around for cmake < 3.21
PkgConfig::xyz won't exist before 3.21 if xyz doesn't require any flags
(which is common for a system-installed header-only library like oxenc).

(CMake bug 22180)
2022-03-30 16:09:40 -03:00
Jason Rhinelander 02323ec8e9
1.2.11 release 2022-03-29 23:37:01 -03:00
Jason Rhinelander 9dde79a7e7
Add liboxenc-dev build and dev dependency 2022-03-29 23:26:37 -03:00
Jason Rhinelander 8cf4a4e028
jammy + 1.2.11 2022-03-29 23:18:21 -03:00
Jason Rhinelander 85bc94ee67
Merge remote-tracking branch 'origin/stable' into ubuntu/jammy 2022-03-29 23:15:32 -03:00
Jason Rhinelander 5c72a57eca
Merge remote-tracking branch 'origin/dev' into stable 2022-02-10 14:01:54 -04:00
Jason Rhinelander 77c4840273
Fix extra file in header install list 2022-02-07 14:41:51 -04:00
Jason Rhinelander d7f5efebc1
Merge pull request #72 from jagerman/oxenc
Use oxen-encoding and add compatibility shim headers
2022-02-07 14:39:59 -04:00
Jason Rhinelander a0a54ed461
Fix static build 2022-02-07 14:38:19 -04:00
Jason Rhinelander 045df9cb9b
Use oxen-encoding and add compatibility shim headers
bt_*, hex, base32z, base64 all moved to oxen-encoding a while ago; this
finishes the move by removing them from oxenmq and instead making oxenmq
depend on oxen-encoding.
2022-01-18 10:30:23 -04:00
Jason Rhinelander edd225a2a7
1.2.10 release 2021-12-02 19:20:45 -04:00
Jason Rhinelander 068ac97788
1.2.10 release 2021-12-02 19:11:53 -04:00
Jason Rhinelander e03f1608fb
Merge remote-tracking branch 'origin/stable' into ubuntu/impish 2021-12-02 19:11:52 -04:00
Jason Rhinelander 816fd31bf7
Merge remote-tracking branch 'origin/dev' into stable 2021-12-02 19:10:37 -04:00
Jason Rhinelander 3d178ce3ea
Merge pull request #71 from jagerman/disable-ipv6
Disable IPv6 by default
2021-12-02 19:06:50 -04:00
Jason Rhinelander fe8a1f4306
Disable IPv6 by default
libzmq's IPv6 support is buggy when also using DNS hostname: in
particular, if you try to connect to a DNS name that has an IPv6
address, then zmq will *only* try an IPv6 connection, even if the local
client has no IPv6 connectivity, and even if the remote is only
listening on its IPv4 address.

This is much too unreliable to enable by default.
2021-12-02 19:01:21 -04:00
Jason Rhinelander 9d1bef6d8b 1.2.9 proper release 2021-11-30 14:35:07 -04:00
Jason Rhinelander 2a5650f7fa 1.2.9 proper release 2021-11-30 14:32:45 -04:00
Jason Rhinelander 57be1055f6 Merge remote-tracking branch 'origin/stable' into ubuntu/impish 2021-11-30 14:32:36 -04:00
Jason Rhinelander dd566b99dc Merge remote-tracking branch 'origin/dev' into stable 2021-11-30 14:30:19 -04:00
Jason Rhinelander 3b634329ac Fix libc++
libc++ hates the forward declaration, so just include the <future>
header.
2021-11-30 14:29:24 -04:00
Jason Rhinelander a8bbc93a85 1.2.9 release 2021-11-30 14:26:01 -04:00
Jason Rhinelander 0ab315b2f4 Merge remote-tracking branch 'origin/stable' into ubuntu/impish 2021-11-30 14:25:58 -04:00
Jason Rhinelander 428def0ae6 Merge branch 'dev' into stable 2021-11-30 14:23:08 -04:00
Jason Rhinelander f88691b7e9 Bump version 2021-11-30 14:22:21 -04:00