Michael Davidsaver
0ad81d0f49
add Discovered::peerVersion
2022-05-18 12:27:33 -07:00
Michael Davidsaver
cce797263d
fix handling of pva_ctrl_msg::SetEndian
2022-05-18 10:32:16 -07:00
Michael Davidsaver
1be0477ee6
evsocket::canIPv6 once
2022-04-05 07:57:16 -07:00
Michael Davidsaver
df4289b4e6
IPv6+mcast support
2022-04-05 07:57:16 -07:00
Michael Davidsaver
1040e87f39
add SockAddr::isMCast() and capacity()
2022-04-05 07:57:16 -07:00
Michael Davidsaver
7a65a85c99
client: add discover() and pvxlist
2022-04-05 07:57:16 -07:00
Michael Davidsaver
47ebfd5371
Accept CMD_ORIGIN_TAG
...
Implement local mcast hack
2022-04-05 07:57:16 -07:00
Michael Davidsaver
290b565203
minor
2022-04-05 07:57:16 -07:00
Michael Davidsaver
f67f27e96b
Portable capture of destination interface and IP address
...
Use recvmsg() and control messages IP_PKTINFO (Linux, OSX, Windows)
or IP_ORIGDSTADDR and IP_RECVIF (RTEMS w/ libbsd) to find the
index of the logical interface through which a UDP packet was received,
and the destination address from the IPv4 header.
Also, clear IP_MULTICAST_ALL on Linux to disable non-compliant legacy brokenness
and receive only those multicasts we are interested in.
2022-04-05 07:57:16 -07:00
Michael Davidsaver
98edf61de8
Add client/server fromEnv() without temporary Config on caller stack
2021-08-06 12:34:32 -07:00
Michael Davidsaver
d6bf565ed6
rename interfaces() -> broadcasts()
2021-08-04 17:26:10 -07:00
Michael Davidsaver
3145c010d2
Extend report()
...
ReportInfo to allow pass through from Source.
Also include peer credentials
2021-07-06 18:32:53 -07:00
Michael Davidsaver
99c1534dfa
client: add ConnectBuilder::syncCancel()
2021-07-06 18:32:53 -07:00
Michael Davidsaver
9af841cccd
server/client search logging
2021-07-06 18:32:53 -07:00
Michael Davidsaver
f52609a587
client: ignoreGUIDs()
2021-07-06 18:32:52 -07:00
Michael Davidsaver
f7b3821e10
client: consistent Channel disconnect handling
...
More commonality betwee disconnect and CMD_DESTROY_CHANNEL.
squash! client: consistent Channel disconnect handling
Periodic cache cleaning
2021-07-06 18:32:36 -07:00
Michael Davidsaver
5d3a21f030
client Channel search bypass
...
Bypass the broadcast search phase and directly connect
to a specific server and issue CMD_CREATE_CHANNEL.
Note, due to pvAccessCPP buggyness, this can only be relied
upon to connect with the unadvertised magic 'server' PV.
2021-07-03 13:20:20 -07:00
Michael Davidsaver
0e5bd37b6e
minor
2021-07-02 13:15:50 -07:00
Michael Davidsaver
bc1cc57f1e
client: cacheClear() partial
2021-06-27 10:17:14 -07:00
Michael Davidsaver
69ed03e508
client: fix bcast addr id
2021-06-27 10:17:14 -07:00
Michael Davidsaver
e3465b7ee8
plumb file+line through _to_wire/_from_wire
2021-06-27 10:17:14 -07:00
Michael Davidsaver
8363c7fe9a
client add TCP search
2021-06-27 10:17:14 -07:00
Michael Davidsaver
132ad1ae6f
client: handle CMD_SEARCH_RESPONSE over TCP
2021-06-27 10:17:14 -07:00
Michael Davidsaver
708fbc8062
client: add *Builder::syncCancel(bool)
...
Option for asynchronous cancel (eg. implicitly through ~Operation).
2021-06-27 10:17:13 -07:00
Michael Davidsaver
c4d2cd4a10
client: reorg context Pvt
2021-06-27 10:17:13 -07:00
Michael Davidsaver
8eac7c9941
client: relax exec() synchronization for connect()
2021-06-27 10:17:13 -07:00
Michael Davidsaver
4683d56421
client/server report tx/rx counts
2021-06-27 10:17:13 -07:00
Michael Davidsaver
60d275412f
conn/chan tx/rx stat tracking
2021-06-27 10:17:13 -07:00
Michael Davidsaver
89f9c54d62
client: relax exec() synchronization
...
dispatch() instead of call().
2021-06-08 09:45:49 -07:00
Michael Davidsaver
564b9ec2cc
client: add Context::connect()
...
A means of manually (pre)populating
the channel cache.
2021-06-08 09:45:49 -07:00
Michael Davidsaver
bd7ba0db62
simplify GUID printing
2021-06-08 09:45:48 -07:00
Michael Davidsaver
94f0065a4d
fix beaconSenders locking
2021-06-08 09:45:21 -07:00
Michael Davidsaver
a4c06fe423
minor
2021-06-02 14:47:39 -05:00
Michael Davidsaver
b38b33db03
raise search reply processing limit
...
Seems pvAccessCPP likes to send lots of individual replies
to our nicely batched search requests.
2021-02-12 11:19:46 -08:00
Michael Davidsaver
a064677e36
detect UDP RX buffer overflows
...
On Linux, use SO_RXQ_OVFL to snoop on the OS dropped packet
counter for our socket buffer. Does not detect drops on
ingress, or internal to, to OS IP stack.
2021-01-28 07:44:32 -08:00
Michael Davidsaver
84ef355a4a
client: try not to fragment search packets
2021-01-28 07:44:32 -08:00
Michael Davidsaver
e9ce80880d
remote file:line from decode errors
2021-01-12 11:32:10 -08:00
Michael Davidsaver
76764cf978
xcode: capture file:line of fault()
2021-01-12 11:32:10 -08:00
Michael Davidsaver
d15430fb17
fix poke race
...
poke()d from both UDP (tickSearch()) and TCP workers (*Builder::exec())
2020-12-30 10:55:22 -08:00
Michael Davidsaver
b8d204e35c
proto bug: client search requests incorrectly set Server direction
2020-12-18 15:51:37 -08:00
Michael Davidsaver
0395982691
add evsocket::interfaces() wrapper
2020-12-13 15:49:43 -08:00
Michael Davidsaver
e52ae674ca
client: bypass search throttling during Channel creation
2020-08-10 12:09:55 -07:00
Michael Davidsaver
67843eb392
more config
2020-08-10 12:09:55 -07:00
Michael Davidsaver
33b6f362db
client: Handle orphaned Operations
...
Allow Operation instances to outlive
the Context through which they were
created.
2020-08-10 12:09:55 -07:00
Michael Davidsaver
3b9dd9c405
client Operation expose PV name
...
Desirable to include in error messages if nothing else
2020-08-10 12:09:55 -07:00
Michael Davidsaver
609768a33d
add client channel cache
...
Maintain unused channels for 20 seconds before closing.
2020-05-07 18:45:16 -07:00
Michael Davidsaver
47790e5943
ResultWaiter::complete() only once
2020-05-07 18:45:16 -07:00
Klemen Vodopivec
02f24a74e7
Made it build on EPICS 3.14.12.6, all unit tests pass.
2020-04-16 22:01:38 -07:00
Michael Davidsaver
cfda7e2260
client: trap error in close()
2020-04-07 12:05:31 -07:00
Michael Davidsaver
a6c1565793
Add "live" counter for client Context
2020-04-07 12:05:30 -07:00