87eace1bd4
Fix for solaris compiler complaint about ambiguity of 'exception'.
Andrew Johnson2009-08-18 19:26:37 +00:00
db3a655374
fixed improper calculation of signal needed state in postEvent (this is an issue I introduced when writing the patch where IO and subscription update events are maintained on seperate and independent queues). The issue does not exist in an EPICS base release.
Jeff Hill2009-08-18 00:40:00 +00:00
8ae0c8960f
corrected spelling in message
Jeff Hill2009-08-18 00:36:22 +00:00
ec26c0dc52
o track number of async read and writes independently o when the last async write occurs, check to see if a value is cached and write it immediately (instead of waiting for aync io object's ctor to run. This allows the regression tests to pass.
Jeff Hill2009-08-18 00:32:48 +00:00
547c5d06ea
improved the maint of the asych io count in off normal situations
Jeff Hill2009-08-14 00:24:09 +00:00
50ddd62502
o always arm the send independent of how many messages are placed in the out buf. The send will not arm if the out buf is empty o when receiving the io blocked state notify callback always reactivate the receive if space is available
Jeff Hill2009-08-13 23:55:03 +00:00
9fc48c9a6b
always arm the send independent of how many messages are placed in the out buf. The send will not arm if the out buf is empty.
Jeff Hill2009-08-13 23:51:40 +00:00
e4075da4d7
o added new ioQue so the server will not wedge one of its clients when simultaneouly in flow control mode and also asynchronous io postponed mode. o simplified the status from the process func because callers should not need to know how many messages have been sent
Jeff Hill2009-08-13 23:49:59 +00:00
8ace886cfe
o added new ioQue so the server will not wedge one of its clients when simultaneouly in flow control mode and also asynchronous io postponed mode. o simplified the status from the process func because callers should not need to know how many messages have been sent
Jeff Hill2009-08-13 23:42:37 +00:00
6c61c0de34
signal the io blocked list each time that server centric async io completes
Jeff Hill2009-08-13 23:38:41 +00:00
e581e88223
simplified the return from eventSysProcess because callers should not need to know how many messages were sent
Jeff Hill2009-08-13 23:37:30 +00:00
f4cbdec5ee
removed io blocked list signal because the base class does not know if the blocked list is with the pv or the server
Jeff Hill2009-08-13 23:32:18 +00:00
b344841365
fixed the following issues with detection of flow control mode o the flow control contig frame thresh should be based on max array size o it appears that the wakeup mechanism for the send thread, who sends the flow control on/off messages was broken o looking at full buffers isnt a perfect detection scheme compared to the simpler approach of just checking to see if bytes are pending in the socket before calling recv
Jeff Hill2009-08-13 23:29:02 +00:00
b867dabad0
cache the client ctx ref prior to calling callback in case they delete the channel in the callback
Jeff Hill2009-08-13 22:46:47 +00:00
0cea525682
destroy putCallback prior to calling callback in case they delete the channel in the callback
Jeff Hill2009-08-13 22:44:30 +00:00
2df7da052a
destroy getCallback prior to calling callback in case they delete the channel in the callback
Jeff Hill2009-08-13 22:43:21 +00:00
59b820d2f5
added missing epicsShareExtern
Jeff Hill2009-08-13 22:42:05 +00:00
3fda8dc2b0
added test failure diagnostic
Jeff Hill2009-08-13 22:40:02 +00:00
42ce1bd2db
o reset pendingResponseStatus, reqPayloadNeedsByteSwap, responseIsPending, and pValueRead whenever removing a message from the stream o eliminated error prone reuse of status variables o dont allow service to postpone IO when no IO is pending against the target o be extra careful not to do things twice when send blocked or IO postponed
Jeff Hill2009-08-06 00:06:59 +00:00
7de356519d
o added pValueRead gdd snart pointer o payloadNeedsByteSwap renamed to reqPayloadNeedsByteSwap o added issuePosponeWhenNonePendingWarning static func
Jeff Hill2009-08-05 23:58:40 +00:00
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