tgmail/server/conn_wrapper.go

50 lines
805 B
Go

package server
import (
"bufio"
"log"
"net"
"strconv"
"strings"
)
type wrapper struct {
net.Conn
r *bufio.Reader
}
func (w *wrapper) cmd(code int64, msgs ...string) error {
for i, msg := range msgs {
sep := "-"
if i == len(msgs)-1 {
sep = " "
}
err := w.send(strconv.FormatInt(code, 10) + sep + msg)
if err != nil {
return err
}
}
return nil
}
func (w *wrapper) send(message string) error {
log.Println("+", message)
// fuck some MTAs
_, err := w.Write([]byte(message + "\r\n"))
return err
}
func (w *wrapper) recv() (string, error) {
if w.r == nil {
w.r = bufio.NewReader(w)
}
//log.Println("* recv called")
msg, err := w.r.ReadString('\n')
if err != nil {
return "", err
}
msg = strings.TrimRight(msg, " \t\r\n")
log.Println("-", msg)
return msg, nil
}