You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gomud/cmd/echo/server.go

63 lines
1.0 KiB
Go

package main
import (
"bufio"
"context"
"log"
"net"
"github.com/ThreeDotsLabs/watermill"
"github.com/ThreeDotsLabs/watermill/message"
)
type TELNETServer struct {
l net.Listener
}
func NewTELNETServer(l net.Listener) *TELNETServer {
ts := TELNETServer{
l: l,
}
return &ts
}
func (ts *TELNETServer) Run(ctx context.Context) {
for {
conn, err := ts.l.Accept()
if err != nil {
log.Fatal(err)
}
go func(c net.Conn) {
s := bufio.NewScanner(c)
defer c.Close()
for s.Scan() {
t := s.Text()
err := ts.Publish("raw_telnet", message.NewMessage(watermill.NewUUID(), []byte(t)))
if err != nil {
log.Fatalln("couldn't write to raw_telnet queue")
}
log.Printf("Received user input: %q\n", t)
}
}(conn)
}
}
func (ts *TELNETServer) Publish(topic string, messages ...*message.Message) error {
return nil
}
func main() {
l, err := net.Listen("tcp", ":5555")
if err != nil {
log.Fatal(err)
}
defer l.Close()
ts := NewTELNETServer(l)
ts.Run(context.Background())
}