diff options
author | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
commit | 630a37d2fe66f24518299e705f958b571803c522 (patch) | |
tree | 969723791bdc4d73bb099c19d45554d0ca241ad9 /csharp/src/Ice/ConnectionRequestHandler.cs | |
parent | Fix some README.md markdown formatting (diff) | |
download | ice-630a37d2fe66f24518299e705f958b571803c522.tar.bz2 ice-630a37d2fe66f24518299e705f958b571803c522.tar.xz ice-630a37d2fe66f24518299e705f958b571803c522.zip |
py -> python
rb -> ruby
objc -> objective-c
cs -> csharp
Diffstat (limited to 'csharp/src/Ice/ConnectionRequestHandler.cs')
-rw-r--r-- | csharp/src/Ice/ConnectionRequestHandler.cs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/csharp/src/Ice/ConnectionRequestHandler.cs b/csharp/src/Ice/ConnectionRequestHandler.cs new file mode 100644 index 00000000000..8ddcca74e02 --- /dev/null +++ b/csharp/src/Ice/ConnectionRequestHandler.cs @@ -0,0 +1,77 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +using System; +using System.Diagnostics; +using System.Collections.Generic; +using Ice.Instrumentation; + +namespace IceInternal +{ + public class ConnectionRequestHandler : RequestHandler + { + public RequestHandler update(RequestHandler previousHandler, RequestHandler newHandler) + { + try + { + if(previousHandler == this) + { + return newHandler; + } + else if(previousHandler.getConnection() == _connection) + { + // + // If both request handlers point to the same connection, we also + // update the request handler. See bug ICE-5489 for reasons why + // this can be useful. + // + return newHandler; + } + } + catch(Ice.Exception) + { + // Ignore + } + return this; + } + + public bool sendAsyncRequest(ProxyOutgoingAsyncBase outAsync, out Ice.AsyncCallback sentCallback) + { + return outAsync.invokeRemote(_connection, _compress, _response, out sentCallback); + } + + public void asyncRequestCanceled(OutgoingAsyncBase outAsync, Ice.LocalException ex) + { + _connection.asyncRequestCanceled(outAsync, ex); + } + + public Reference getReference() + { + return _reference; + } + + public Ice.ConnectionI getConnection() + { + return _connection; + } + + public ConnectionRequestHandler(Reference @ref, Ice.ConnectionI connection, bool compress) + { + _reference = @ref; + _response = _reference.getMode() == Reference.Mode.ModeTwoway; + _connection = connection; + _compress = compress; + } + + private Reference _reference; + private bool _response; + private Ice.ConnectionI _connection; + private bool _compress; + } +} |