summaryrefslogtreecommitdiff
path: root/csharp/test/Ice/location/TestI.cs
blob: ccdd20c5f0a083c771483c896db52c456a8053ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//

namespace Ice
{
    namespace location
    {
        public class TestI : Test.TestIntfDisp_
        {
            internal TestI(Ice.ObjectAdapter adapter1,
                           Ice.ObjectAdapter adapter2, ServerLocatorRegistry registry)
            {
                _adapter1 = adapter1;
                _adapter2 = adapter2;
                _registry = registry;

                _registry.addObject(_adapter1.add(new HelloI(), Ice.Util.stringToIdentity("hello")));
            }

            public override void shutdown(Ice.Current current)
            {
                _adapter1.getCommunicator().shutdown();
            }

            public override Test.HelloPrx getHello(Ice.Current current)
            {
                return Test.HelloPrxHelper.uncheckedCast(_adapter1.createIndirectProxy(
                                                                Ice.Util.stringToIdentity("hello")));
            }

            public override Test.HelloPrx getReplicatedHello(Ice.Current current)
            {
                return Test.HelloPrxHelper.uncheckedCast(_adapter1.createProxy(
                                                                Ice.Util.stringToIdentity("hello")));
            }

            public override void migrateHello(Ice.Current current)
            {
                Ice.Identity id = Ice.Util.stringToIdentity("hello");
                try
                {
                    _registry.addObject(_adapter2.add(_adapter1.remove(id), id));
                }
                catch(Ice.NotRegisteredException)
                {
                    _registry.addObject(_adapter1.add(_adapter2.remove(id), id));
                }
            }

            private Ice.ObjectAdapter _adapter1;
            private Ice.ObjectAdapter _adapter2;
            private ServerLocatorRegistry _registry;
        }
    }
}