191668023b
independent of whether receive bytes are pending or not. This improves event latency, and allows events to flow if we are blocked due to the service postponing an IO operation. This was a bug fix.
Jeff Hill2009-07-31 00:47:56 +00:00
7a23b74a76
o when processing subscription update events, always activate the send independent of whether receive bytes are pending or not. This improves event latency, and allows events to flow if we are blocked due to the service postponing an IO operation. This was a bug fix. o when finishing processing input activate a send if more than one half of the TCP buffering would be used. In the past the send was not activated until either the send buffer was full or the receive buffer (including any bytes waiting in the socket) was empty. This could cause latency and performance issues because send receive piplining would not occur if they have very large buffers due to a large EPICS_CA_MAX_ARRAY_SIZE. o always activate a send if we enter a service is postponing IO state. Users would probably prefer to receive past responses and not wait until the postponed IO initiates.
Jeff Hill2009-07-31 00:41:34 +00:00
511d818d18
o removed sendBlocked flag o removed processInput function o removed eventFlush function o made casStreamIOWakeup and casStreamEvWakeup friends
Jeff Hill2009-07-31 00:00:42 +00:00
f8565139c2
o removed sendBlocked flag o removed processInput function o removed eventFlush function o made casDGEvWakeup, casDGIOWakeup, and casStreamEvWakeup friends
Jeff Hill2009-07-30 23:54:18 +00:00
30a02b365f
incomingBytesPresent renamed to inCircuitBytesPending but this function isnt currently used
Jeff Hill2009-07-30 23:51:48 +00:00
b4bc931c72
incomingBytesPresent renamed to dgInBytesPending, but this function is not currently used
Jeff Hill2009-07-30 23:50:45 +00:00
e5d3815280
o removed bytesAvailable member function from inBuf because we nolonger check the bytes in the socket with an ioctl o removed incomingBytesPresent virtual function from inBufClient interface because we nolonger check the bytes in the socket with an ioctl
Jeff Hill2009-07-30 23:48:43 +00:00
8c45eb4a19
o casStrmClient::inBufBytesAvailable renamed to casStrmClient:: inBufBytesPending reflecting the fact that we nlonger use a socket ioctl to check how many bytes are pending in the sockets input queue o casStrmClient::outBufBytesPresent renamed to casStrmClient::outBufBytesPending for consistency with inBufBytesPending
Jeff Hill2009-07-30 23:43:21 +00:00
e1bb171f44
o casStrmClient::inBufBytesAvailable renamed to casStrmClient:: inBufBytesPending reflecting the fact that we nlonger use a socket ioctl to check how many bytes are pending in the sockets input queue o casStrmClient::outBufBytesPresent renamed to casStrmClient::outBufBytesPending for consistency with inBufBytesPending o in casStrmClient :: processMsg () I forced status to S_cas_success at a couple of loop exits. There is probably not a bug because the variable is initialized to this value and the loop termintaes if the status isnt this value nevertheless the corrected code is more robust to future changes. o fixed a benign issue in casStrmClient :: processMsg () where if the user sends a message to big for EPICS_MAX_ARRAY_SIZE and there is currently no room in the output buffer then the user will not receive a diagnostic message. With the patch the message will be sent later once there is space.
Jeff Hill2009-07-30 23:42:15 +00:00
656c2462d3
o casDGClient::inBufBytesAvailable renamed to casDGClient :: inBufBytesPending reflecting the fact that we nlonger use a socket ioctl to check how many bytes are pending in the sockets input queue o casDGClient::outBufBytesPresent renamed to casDGClient::outBufBytesPending for consistency with inBufBytesPending
Jeff Hill2009-07-30 23:31:32 +00:00
f4ec20c8f0
casDGClient::inBufBytesAvailable renamed to casDGClient :: inBufBytesPending reflecting the fact that we nlonger use a socket ioctl to check how many bytes are pending in the sockets input queue
Jeff Hill2009-07-30 23:29:43 +00:00
72e1dba496
o no need to allocate or initialize one more fd_set than is used (not a bug but messy) o added optimization where we only check as many registered fd's on the list as select tells us are active in its status o added code to clear all of the fd_set if select returns an error (in practice this would not cause a bug other than some extra activity that would immediately self terminate when it clear the flag in the fd_set, and also we dont see the error message printed when select returns an error)
Jeff Hill2009-07-30 23:21:19 +00:00
ce778819bd
Update comment; can't deprecate a published API!
Andrew Johnson2009-07-28 21:11:02 +00:00
d5bffdb13d
Can't portably pass filesystem paths as command-line macros to C. Generate a header file instead and include that.
Andrew Johnson2009-07-28 21:08:37 +00:00
6eb25148c5
simplified tcp send interactions
Jeff Hill2009-07-25 00:43:28 +00:00
4ade695a60
upgraded to properly test array performance
Jeff Hill2009-07-23 23:59:04 +00:00
bea22985b6
Generate code to abort if no DBD file loaded yet.
Andrew Johnson2009-07-23 22:13:29 +00:00
fd6d1ce69c
As reported by Michael Davidsaver. Apparently the GeSys dynamic linker doesn't maintain C semantics. I'm afraid that this behaviour is likely to cause lots of other problems, but for now I'll apply the patch since it's harmless.
W. Eric Norum2009-07-23 21:04:27 +00:00
844ed6345a
test also numbers in -5 to 5 range
Jeff Hill2009-07-23 17:32:33 +00:00
b6a22aa844
removed optimization which could make the ca client library vulnerable if the following function indicates recv bytes are pending but recv blocks anyways.
Jeff Hill2009-07-17 21:33:18 +00:00
5b62da8229
fixed memory leak caused by previous revision (fixing compiler warnings)
Jeff Hill2009-07-17 19:15:39 +00:00