diff options
author | Martin Ritchie <ritchiem@apache.org> | 2007-06-28 08:09:20 +0000 |
---|---|---|
committer | Martin Ritchie <ritchiem@apache.org> | 2007-06-28 08:09:20 +0000 |
commit | 79cd6c772da003ddc917eff362f9adaa99e28b49 (patch) | |
tree | bbb1e4b46add9a52f4eb15afe83fb16b5ff6af66 /dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs | |
parent | e1de334597e23b55c9e91c1f853f52e8313ba103 (diff) | |
download | qpid-python-79cd6c772da003ddc917eff362f9adaa99e28b49.tar.gz |
Merged revisions 539783-539788 via svnmerge from
https://svn.apache.org/repos/asf/incubator/qpid/branches/M2
........
r539783 | tomasr | 2007-05-19 18:40:32 +0100 (Sat, 19 May 2007) | 8 lines
* QPID-495 (Contributed by Carlos Medina) Implement default timeouts for AttainState and SyncWrite
* Fix method signatures
* Remove SSL test with client-side certificates (requires extra setup)
* Add locks AMSQtateManager and AMQProtocolListener to prevent modification of listener collections while processing notifications
* Add library/runtime information to ConnectionStartMethodHandler
* Fix some compiler warnings
* Added XML documentation for some api interfaces
........
r539788 | tomasr | 2007-05-19 19:55:33 +0100 (Sat, 19 May 2007) | 1 line
* Excluded failover tests from nant builds and SSL tests on mono
........
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@551497 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs')
-rw-r--r-- | dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs b/dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs index 32847f9b9b..0ef337501e 100644 --- a/dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs +++ b/dotnet/Qpid.Client/Client/Protocol/ProtocolWriter.cs @@ -23,6 +23,8 @@ using Qpid.Client.Protocol.Listener; using Qpid.Client.Transport; using Qpid.Framing; +using log4net; + namespace Qpid.Client.Protocol { /// <summary> @@ -30,6 +32,9 @@ namespace Qpid.Client.Protocol /// </summary> public class ProtocolWriter { + + private ILog _logger = LogManager.GetLogger(typeof(ProtocolWriter)); + IProtocolWriter _protocolWriter; IProtocolListener _protocolListener; @@ -51,13 +56,15 @@ namespace Qpid.Client.Protocol /// </summary> /// <param name="frame">the frame</param> /// <param name="listener">the blocking listener. Note the calling thread will block.</param> - private AMQMethodEvent SyncWrite(AMQFrame frame, BlockingMethodFrameListener listener) + /// <param name="timeout">set the number of milliseconds to wait</param> + private AMQMethodEvent SyncWrite(AMQFrame frame, BlockingMethodFrameListener listener, int timeout) { try { _protocolListener.AddFrameListener(listener); _protocolWriter.Write(frame); - return listener.BlockForFrame(); + + return listener.BlockForFrame(timeout); } finally { @@ -67,11 +74,32 @@ namespace Qpid.Client.Protocol // that matches the criteria defined in the blocking listener } + /// <summary> + /// Convenience method that writes a frame to the protocol session and waits for + /// a particular response. Equivalent to calling getProtocolSession().write() then + /// waiting for the response. + /// </summary> + /// <param name="frame">the frame</param> + /// <param name="responseType">the type of method response</param> public AMQMethodEvent SyncWrite(AMQFrame frame, Type responseType) { // TODO: If each frame knew it's response type, then the responseType argument would // TODO: not be neccesary. - return SyncWrite(frame, new SpecificMethodFrameListener(frame.Channel, responseType)); + return SyncWrite(frame, responseType, DefaultTimeouts.MaxWaitForSyncWriter); + } + + /// <summary> + /// Convenience method that writes a frame to the protocol session and waits for + /// a particular response. Equivalent to calling getProtocolSession().write() then + /// waiting for the response. + /// </summary> + /// <param name="frame">the frame</param> + /// <param name="responseType">the type of method response</param> + /// <param name="timeout">set the number of milliseconds to wait</param> + /// <returns>set the number of milliseconds to wait</returns> + public AMQMethodEvent SyncWrite(AMQFrame frame, Type responseType, int timeout) + { + return SyncWrite(frame, new SpecificMethodFrameListener(frame.Channel, responseType), timeout); } } } |