summaryrefslogtreecommitdiff
path: root/csharp/test/Ice/interceptor/InterceptorI.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/test/Ice/interceptor/InterceptorI.cs')
-rw-r--r--csharp/test/Ice/interceptor/InterceptorI.cs82
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;
+}