diff options
Diffstat (limited to 'csharp/test/Ice/interceptor/InterceptorI.cs')
-rw-r--r-- | csharp/test/Ice/interceptor/InterceptorI.cs | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/csharp/test/Ice/interceptor/InterceptorI.cs b/csharp/test/Ice/interceptor/InterceptorI.cs new file mode 100644 index 00000000000..94a58c0c834 --- /dev/null +++ b/csharp/test/Ice/interceptor/InterceptorI.cs @@ -0,0 +1,82 @@ +// ********************************************************************** +// +// 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.Collections; +using System.Diagnostics; + +class InterceptorI : Ice.DispatchInterceptor +{ + internal InterceptorI(Ice.Object servant) + { + servant_ = servant; + } + + protected static void + test(bool b) + { + if(!b) + { + throw new Exception(); + } + } + + public override Ice.DispatchStatus + dispatch(Ice.Request request) + { + Ice.Current current = request.getCurrent(); + lastOperation_ = current.operation; + + if(lastOperation_.Equals("addWithRetry")) + { + for(int i = 0; i < 10; ++i) + { + try + { + servant_.ice_dispatch(request); + test(false); + } + catch(Test.RetryException) + { + // + // Expected, retry + // + } + } + + current.ctx["retry"] = "no"; + } + + lastStatus_ = servant_.ice_dispatch(request); + return lastStatus_; + } + + internal Ice.DispatchStatus + getLastStatus() + { + return lastStatus_; + } + + internal String + getLastOperation() + { + return lastOperation_; + } + + internal virtual void + clear() + { + lastOperation_ = null; + lastStatus_ = Ice.DispatchStatus.DispatchAsync; + } + + protected readonly Ice.Object servant_; + protected string lastOperation_; + protected Ice.DispatchStatus lastStatus_ = Ice.DispatchStatus.DispatchAsync; +} |