0

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

0 Answers0