51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
using Decal.Adapter.NetParser;
|
|
using Decal.Adapter.Wrappers;
|
|
using Decal.Interop.Core;
|
|
using Decal.Interop.Net;
|
|
|
|
namespace Decal.Adapter;
|
|
|
|
public sealed class FilterProxy : INetworkFilter2, IDecalDirectory
|
|
{
|
|
private NetServiceHost myService;
|
|
|
|
private FilterBase myFilter;
|
|
|
|
internal FilterProxy(FilterBase toWrap)
|
|
{
|
|
myFilter = toWrap;
|
|
}
|
|
|
|
void INetworkFilter2.DispatchClient(IMessage2 msg)
|
|
{
|
|
Message message = null;
|
|
message = ((!(msg is MessageWrapper messageWrapper)) ? new Message(msg, MessageDirection.Inbound) : messageWrapper.Wrapped);
|
|
myFilter.fireNetwork(message, Server: false);
|
|
}
|
|
|
|
void INetworkFilter2.DispatchServer(IMessage2 msg)
|
|
{
|
|
Message message = null;
|
|
message = ((!(msg is MessageWrapper messageWrapper)) ? new Message(msg, MessageDirection.Inbound) : messageWrapper.Wrapped);
|
|
myFilter.fireNetwork(message, Server: true);
|
|
}
|
|
|
|
void INetworkFilter2.Initialize(NetService pService)
|
|
{
|
|
myService = new NetServiceHost(pService);
|
|
myFilter.SetHost(myService);
|
|
myFilter.standardEvent(ExtensionEvents.InternalWireup);
|
|
myFilter.standardEvent(ExtensionEvents.Startup);
|
|
}
|
|
|
|
void INetworkFilter2.Terminate()
|
|
{
|
|
myFilter.standardEvent(ExtensionEvents.Shutdown);
|
|
myService.Dispose();
|
|
}
|
|
|
|
object IDecalDirectory.Lookup(string strName)
|
|
{
|
|
return myFilter.ResolvePath(strName);
|
|
}
|
|
}
|