|
From: <exo...@us...> - 2003-07-13 13:27:10
|
Update of /cvsroot/nmock/nmock/src/NMock/Remoting
In directory sc8-pr-cvs1:/tmp/cvs-serv24746/src/NMock/Remoting
Added Files:
MockServer.cs RemotingClassGenerator.cs RemotingMock.cs
Log Message:
added support for remotable mocks
--- NEW FILE: MockServer.cs ---
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
namespace NMock.Remoting
{
public class MockServer : IDisposable
{
private MarshalByRefObject mock;
private IChannel channel;
private ObjRef mockRef;
public MockServer(MarshalByRefObject mock, IChannel channel, string uri)
{
this.mock = mock;
this.channel = channel;
ChannelServices.RegisterChannel(channel);
mockRef = RemotingServices.Marshal(mock, uri);
}
public void Dispose()
{
try
{
if (mockRef != null)
{
RemotingServices.Disconnect(mock);
}
}
catch (Exception) { throw; }
finally { ChannelServices.UnregisterChannel(channel); }
}
}
}
--- NEW FILE: RemotingClassGenerator.cs ---
using System;
using NMock.Dynamic;
namespace NMock.Remoting
{
public class RemotingClassGenerator : ClassGenerator
{
protected override Type getSuperClass(Type originalType)
{
return (originalType.IsInterface) ? typeof(MarshalByRefObject) : originalType;
}
}
}
--- NEW FILE: RemotingMock.cs ---
using System;
using NMock.Dynamic;
namespace NMock.Remoting
{
public class RemotingMock : DynamicMock
{
public RemotingMock(Type type) : base(type)
{
}
public MarshalByRefObject MarshalByRefInstance
{
get
{
return (MarshalByRefObject)MockInstance;
}
}
protected override ClassGenerator createClassGenerator()
{
return new RemotingClassGenerator();
}
}
}
|