package telnet import ( "bufio" "context" "log" "net" "github.com/ThreeDotsLabs/watermill" "github.com/ThreeDotsLabs/watermill/message" "github.com/ThreeDotsLabs/watermill/message/router/middleware" ) type TELNETServer struct { l net.Listener p message.Publisher c context.Context logger watermill.LoggerAdapter to TELNETOptions } func NewTELNETServer(c context.Context, l net.Listener, p message.Publisher, wml watermill.LoggerAdapter) *TELNETServer { ts := TELNETServer{ c: c, l: l, p: p, logger: wml, } return &ts } func (ts *TELNETServer) Accept() (net.Conn, error) { return ts.l.Accept() } func (ts *TELNETServer) Handle(conn net.Conn) { s := bufio.NewScanner(conn) defer conn.Close() // i need to create an ecs Renderer that targets a iw.Writer (net.Conn) // the renderer correlationID := watermill.NewUUID() ts.logger = ts.logger.With( watermill.LogFields{ "correlation_id": correlationID}, ) for s.Scan() { t := s.Text() m := message.NewMessage(watermill.NewUUID(), []byte(t)) middleware.SetCorrelationID(correlationID, m) err := ts.p.Publish("telnet.raw", m) if err != nil { log.Fatalln("couldn't write to telnet.raw") } ts.logger.Trace("received bytes over telnet", nil) } }