|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 	"log" | 
					
						
							|  |  |  | 	"net" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ThreeDotsLabs/watermill" | 
					
						
							|  |  |  | 	"github.com/ThreeDotsLabs/watermill/message" | 
					
						
							|  |  |  | 	"github.com/ThreeDotsLabs/watermill/message/router/middleware" | 
					
						
							|  |  |  | 	"github.com/ThreeDotsLabs/watermill/message/router/plugin" | 
					
						
							|  |  |  | 	"github.com/ThreeDotsLabs/watermill/pubsub/gochannel" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	l, err := net.Listen("tcp", ":5555") | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		log.Fatal(err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	defer l.Close() | 
					
						
							|  |  |  | 	wmLogger := watermill.NewStdLogger(false, false) | 
					
						
							|  |  |  | 	router, err := message.NewRouter(message.RouterConfig{}, wmLogger) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	router.AddPlugin(plugin.SignalsHandler) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	router.AddMiddleware( | 
					
						
							|  |  |  | 		middleware.CorrelationID, | 
					
						
							|  |  |  | 		middleware.Recoverer, | 
					
						
							|  |  |  | 	) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	pubSub := gochannel.NewGoChannel(gochannel.Config{}, wmLogger) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ctx := context.Background() | 
					
						
							|  |  |  | 	ts := NewTELNETServer(ctx, l, pubSub) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for { | 
					
						
							|  |  |  | 		conn, err := ts.l.Accept() | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			log.Fatal(err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		go ts.Handle(conn) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |