I make ReceiveFilter like this
namespace nHapiTest.SuperSocket
{
public class MLLPBeginEndMarkReceiveFilter : BeginEndMarkReceiveFilter<Hl7RequestInfo>
{
//Both begin mark and end mark can be two or more bytes
private readonly static byte[] BeginMark = new byte[] { 11 }; // HEX 0B
private readonly static byte[] EndMark = new byte[] { 28, 13 }; // HEX 1C, 0D
public MLLPBeginEndMarkReceiveFilter()
: base(BeginMark, EndMark) //pass in the begin mark and end mark
{
}
protected override Hl7RequestInfo ProcessMatchedRequest(byte[] readBuffer, int offset, int length)
{
byte[] msg = new byte[length];
Array.Copy(readBuffer, offset, msg, offset, length);
string result = System.Text.UTF8Encoding.UTF8.GetString(msg);
// Remove the begin and end marks
if (result.Length > 3)
{
StringBuilder sb = new StringBuilder(result);
MLLP.StripMLLPContainer(sb);
result = sb.ToString();
}
// Remove empty space at the end of the message
result = result.TrimEnd(new char[] { ' ', '\r', '\n' });
Hl7RequestInfoParser parser = new Hl7RequestInfoParser();
return parser.ParseRequestInfo(result, "MLLP");
}
}
}
and MLLPBeginEndMarkReceiveFilter called like this
namespace nHapiTest.SuperSocket
{
public class SuperSocketServer : AppServer<SuperSocketSession, Hl7RequestInfo>
{
public SuperSocketServer() : base(new DefaultReceiveFilterFactory<MLLPBeginEndMarkReceiveFilter, Hl7RequestInfo>())
{
}
protected override bool Setup(IRootConfig rootConfig, IServerConfig config)
{
return base.Setup(rootConfig, config);
}
protected override void OnStartup()
{
base.OnStarted();
}
protected override void OnStopped()
{
base.OnStopped();
}
}
}
My question is can I pass parameters(member variable(BeginMark, EndMark) in MLLPBeginEndMarkReceiveFilter) when calling 'base(new DefaultReceiveFilterFactory<MLLPBeginEndMarkReceiveFilter, Hl7RequestInfo>())'?
I want to pass parameters to ReceiverFilter