static void Main(string[] args) { /* * ReuseBuffer needs to be false since we have a ExecutorFilter before * ProtocolCodecFilter which processes incoming IoBuffer. */ IoAcceptor acceptor = new AsyncSocketAcceptor() { ReuseBuffer = false }; acceptor.FilterChain.AddLast("logger", new LoggingFilter()); acceptor.FilterChain.AddLast("executor", new ExecutorFilter()); acceptor.FilterChain.AddLast("to-string", new ProtocolCodecFilter( new TextLineCodecFactory(Encoding.UTF8))); acceptor.FilterChain.AddLast("to-haiki", new ToHaikuIoFilter()); acceptor.ExceptionCaught += (s, e) => e.Session.Close(true); HaikuValidator validator = new HaikuValidator(); acceptor.MessageReceived += (s, e) => { Haiku haiku = (Haiku)e.Message; try { validator.Validate(haiku); e.Session.Write("HAIKU!"); } catch (InvalidHaikuException ex) { e.Session.Write("NOT A HAIKU: " + ex.Message); } }; acceptor.Bind(new IPEndPoint(IPAddress.Any, port)); Console.WriteLine("Listening on " + acceptor.LocalEndPoint); Console.ReadLine(); }
static void Main(string[] args) { /* * ReuseBuffer needs to be false since we have a ExecutorFilter before * ProtocolCodecFilter which processes incoming IoBuffer. */ IoAcceptor acceptor = new AsyncSocketAcceptor() { ReuseBuffer = false }; acceptor.FilterChain.AddLast("logger", new LoggingFilter()); acceptor.FilterChain.AddLast("executor", new ExecutorFilter()); acceptor.FilterChain.AddLast("to-string", new ProtocolCodecFilter( new TextLineCodecFactory(Encoding.UTF8))); acceptor.FilterChain.AddLast("to-haiki", new ToHaikuIoFilter()); acceptor.ExceptionCaught += (s, e) => e.Session.Close(true); HaikuValidator validator = new HaikuValidator(); acceptor.MessageReceived += (s, e) => { Haiku haiku = (Haiku)e.Message; try { validator.Validate(haiku); e.Session.Write("HAIKU!"); } catch (InvalidHaikuException ex) { e.Session.Write("NOT A HAIKU: " + ex.Message); } }; acceptor.Bind(new IPEndPoint(IPAddress.Any, port)); Console.WriteLine("Listening on " + acceptor.LocalEndPoint); Console.ReadLine(); }