#go 校验实现了全部接口

go 校验实现了全部接口


type EventHandler interface {
	OnOpen(c Conn) context.Context
	OnRead(ctx context.Context, c Conn)
	OnClose(ctx context.Context, c Conn)
}

var _ EventHandler = (*eventHandler)(nil) // TODO 校验实现了全部接口

type eventHandler struct{}

func (d *eventHandler) OnOpen(c Conn) context.Context {
	return context.Background()
}

func (d *eventHandler) OnClose(_ context.Context, c Conn) {
	fmt.Printf("[OnClose] conn: %d closed\n", c.Fd())
}

func (d *eventHandler) OnRead(ctx context.Context, c Conn) {
	// todo set reader buffer
	b := make([]byte, 1024)
	n, err := c.Read(b[:cap(b)])
	if err != nil {
		fmt.Println("OnRead err:", err)
	}
	fmt.Println("read data: ", string(b[:n]))
	n, err = c.Write(b[:n])
	fmt.Println("write len:", n)
}