You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			175 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //
 | |
| // 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);
 | |
| 		}
 | |
| 	}
 | |
| }
 |