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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
//
// MonoTests.Remoting.ServerObject.cs
//
// Author: Lluis Sanchez Gual (lluis@ximian.com)
//
// 2003 (C) Copyright, Ximian, Inc.
//
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Lifetime;
using System.Collections;
using NUnit.Framework;
namespace MonoTests.Remoting
{
// A list of ServerObject instances
[ContextHook("x", false)]
public class ServerList:
ContextBoundObject,
IDisposable
{
ArrayList values = new ArrayList();
public int NumVal = 0;
public string StrVal = "val";
public ServerList()
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("List created");
}
public void Dispose()
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("List disposed");
}
public void Add (ServerObject v)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
values.Add (v);
CallSeq.Add ("Added " + v.Name);
}
public void ProcessItems ()
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("Processing");
int total = 0;
foreach (ServerObject ob in values)
total += ob.GetValue();
CallSeq.Add ("Total: " + total);
}
public void Clear()
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("Clearing");
values.Clear();
}
public void ParameterTest1 (int a, out string b)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
b = "adeu " + a;
}
public void ParameterTest2 (int a, out int b)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
b = a+1;
}
public ServerObject NewItem(string name)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
ServerObject obj = new ServerObject(name);
Add (obj);
return obj;
}
public ServerObject CreateItem(string name, int val)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
ServerObject obj = new ServerObject(name);
obj.SetValue (val);
return obj;
}
public ComplexData SetComplexData (ComplexData data)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("Showing content of ComplexData");
data.Dump ();
return data;
}
public override ObjRef CreateObjRef (Type type)
{
Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
CallSeq.Add ("### ServerList.CreateObjRef");
return base.CreateObjRef (type);
}
}
// A remotable object
public class ServerObject:
// ContextBoundObject
MarshalByRefObject
{
int _value;
string _name;
public ServerObject (string name)
{
_name = name;
}
public string Name
{
get { return _name; }
}
public void SetValue (int v)
{
CallSeq.Add ("ServerObject " + _name + ": setting " + v);
_value = v;
}
public int GetValue ()
{
CallSeq.Add ("ServerObject " + _name + ": getting " + _value);
return _value;
}
public override ObjRef CreateObjRef (Type type)
{
CallSeq.Add ("### ServerObject.CreateObjRef");
return base.CreateObjRef (type);
}
}
// Some complex data for testing serialization
public enum AnEnum { a,b,c,d,e };
[Serializable]
public class ComplexData
{
public AnEnum Val = AnEnum.a;
public object[] Info;
public ComplexData (AnEnum va, object[] info)
{
Info = info;
Val = va;
}
public void Dump ()
{
CallSeq.Add ("Content:");
CallSeq.Add ("Val: " + Val);
foreach (object ob in Info)
CallSeq.Add ("Array item: " + ob);
}
}
}
|