Commit Graph
758 Commits
Author SHA1 Message Date
Jeff Hill 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
2009-08-13 23:49:59 +00:00
Jeff Hill 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
2009-08-13 23:42:37 +00:00
Jeff Hill 6c61c0de34 signal the io blocked list each time that server centric async io completes 2009-08-13 23:38:41 +00:00
Jeff Hill e581e88223 simplified the return from eventSysProcess because callers should not need to
know how many messages were sent
2009-08-13 23:37:30 +00:00
Jeff Hill f4cbdec5ee removed io blocked list signal because the base class does not
know if the blocked list is with the pv or the server
2009-08-13 23:32:18 +00:00
Jeff Hill 40b6d1b0ba moved IO pending count to caServer 2009-08-06 02:24:00 +00:00
Jeff Hill 4464cfedaa fixed warning message 2009-08-06 01:36:56 +00:00
Jeff Hill b9fbf2e45b fixed error code numbering 2009-08-06 01:36:30 +00:00
Jeff Hill 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
2009-08-06 00:06:59 +00:00
Jeff Hill 7de356519d o added pValueRead gdd snart pointer
o payloadNeedsByteSwap renamed to reqPayloadNeedsByteSwap
o added issuePosponeWhenNonePendingWarning static func
2009-08-05 23:58:40 +00:00
Jeff Hill ff5ca5e041 added ioIsPending func 2009-08-05 23:56:26 +00:00
Jeff Hill d1bb71809b added S_cas_posponeWhenNonePending status 2009-08-05 23:56:01 +00:00
Andrew Johnson c035566d7d Use compile-time assertions, from Micheal Davidsaver. 2009-08-04 19:10:30 +00:00
Jeff Hill e3a61ce4e4 fix for mantis 358 2009-08-03 22:09:52 +00:00
Jeff Hill 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.

o call processMessage directly from the IO completion callback
that restarts when in an IO postponement state. This makes the logic easier
to understand and maintain, but isnt a functional change
o call processMessage directly from the receive callback.
This makes the logic easier to understand and maintain, but isnt
a functional change
o call processMessage directly from the send callback.
This makes the logic easier to understand and maintain, but isnt
a functional change
o removed the eventFlush function
2009-07-31 00:47:56 +00:00
Jeff Hill 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.

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 removed the eventFlush function
o removed sendBlocked flag
o call processMessage directly from the IO completion callback
that restarts when in an IO postponement state. This makes the logic easier
to understand and maintain, but isnt a functional change
o call processMessage directly from the receive callback.
This makes the logic easier to understand and maintain, but isnt
a functional change
o call processMessage directly from the send callback.
This makes the logic easier to understand and maintain, but isnt
a functional change
2009-07-31 00:41:34 +00:00
Jeff Hill 511d818d18 o removed sendBlocked flag
o removed processInput function
o removed eventFlush function
o made casStreamIOWakeup and casStreamEvWakeup friends
2009-07-31 00:00:42 +00:00
Jeff Hill f8565139c2 o removed sendBlocked flag
o removed processInput function
o removed eventFlush function
o made casDGEvWakeup, casDGIOWakeup, and
casStreamEvWakeup friends
2009-07-30 23:54:18 +00:00
Jeff Hill 30a02b365f incomingBytesPresent renamed to inCircuitBytesPending but this
function isnt currently used
2009-07-30 23:51:48 +00:00
Jeff Hill b4bc931c72 incomingBytesPresent renamed to dgInBytesPending, but this function
is not currently used
2009-07-30 23:50:45 +00:00
Jeff Hill 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
2009-07-30 23:48:43 +00:00
Jeff Hill ebd65e6e34 added an assert test 2009-07-30 23:45:14 +00:00
Jeff Hill 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
2009-07-30 23:43:21 +00:00
Jeff Hill 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.
2009-07-30 23:42:15 +00:00
Jeff Hill 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
2009-07-30 23:31:32 +00:00
Jeff Hill 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
2009-07-30 23:29:43 +00:00
Jeff Hill ba11940aad removed debug printf 2009-07-25 01:24:50 +00:00
Jeff Hill 8725e4a67a removed debug printf 2009-07-25 01:23:18 +00:00
Jeff Hill a6e57ba17a proper data type for socklen_t 2009-07-25 01:16:20 +00:00
Jeff Hill 7d137254af proper data type for socklen_t 2009-07-25 01:14:55 +00:00
Jeff Hill 31fb3775fd improved knowledge of the circuit's buffer size 2009-07-25 01:04:14 +00:00
Jeff Hill 1ba658b452 improved diagnostics 2009-07-25 00:44:21 +00:00
Jeff Hill 6eb25148c5 simplified tcp send interactions 2009-07-25 00:43:28 +00:00
Jeff Hill dfdbe57fd3 fix for mantis 350 2009-07-18 03:56:25 +00:00
Jeff Hill a55e69113e fixed mantis 350 2009-07-17 23:50:07 +00:00
Jeff Hill 9e49e0131f fix for mantis 348 2009-07-14 22:51:06 +00:00
Andrew Johnson 4e0ab97038 (M. Davidsaver): static keyword is part of C89,
remove all uses and internal definitions of LOCAL macro
2009-07-09 16:37:24 +00:00
Andrew Johnson d6fcbe14ab Cleaned up dbDefs.h and errMdef.h
Added various #include lines needed in other sources.
2009-07-09 15:27:43 +00:00
Jeff Hill f7bfbf73f8 additional patches for memory leaks (see mantis 340) 2009-07-07 23:09:21 +00:00
Jeff Hill f2a96aec94 make sure and remove any UDP message remnants if there
is an exception in a UDP message handler stub
2009-06-16 17:45:35 +00:00
Jeff Hill 7653623e72 fixed potential memory leak in createDBRDD () 2009-05-13 21:14:17 +00:00
Jeff Hill 31d6255169 fix for deleteing IO that wasnt selected for delete nor removed from
the list in clearOutstandingReads. This problem would probably
only occur with R3.13 clients, and only then if the R3.13 client times
out in ca_pend_io.
2009-03-04 19:33:18 +00:00
Jeff Hill 9027026680 fix for mantis 329 2009-01-08 22:27:18 +00:00
Jeff Hill 2d51fbc3c7 fixed mantis 325 2008-10-21 20:50:26 +00:00
Jeff Hill 2bf9959e11 committed a fix for mantis 302 2008-09-19 23:27:52 +00:00
Jeff Hill a6f4c7efd9 committed a fix for mantis 302 2008-09-19 23:03:31 +00:00
Janet B. Anderson ef1cd5faf5 RCS files now used for all cygwin and mingw builds. 2008-08-06 16:44:16 +00:00
Andrew Johnson b6ee45dbab Added virtual destructors (in most cases protected) to remove g++ warnings:
'class ...' has virtual functions but non-virtual destructor
2008-07-28 16:19:50 +00:00
Andrew Johnson 343b8c12ed Fix from Mantis #308 from Dirk Zimoch. 2008-07-22 19:50:59 +00:00
Janet B. Anderson eb37f08df2 RM definition has the -f option. 2008-06-11 20:50:17 +00:00