コード例 #1
0
ファイル: handler.go プロジェクト: emersion/miko
// Handle a message of the specified type
func (h *Handler) Handle(t message.Type, conn *message.Conn) error {
	if h.ctx.IsServer() {
		if t != message.Types["version"] && conn.Version == 0 {
			// Client didn't send his version number
			err := conn.Write(func(w io.Writer) error {
				return builder.SendExit(w, message.ExitCodes["client_outdated"])
			})
			if err != nil {
				return err
			}
			return conn.Close()
		}
	}

	if val, ok := h.handlers[t]; ok {
		err := val(h.ctx, conn)

		if err != nil {
			return err
		}
	} else {
		return fmt.Errorf("Unknown message type: %d", t)
	}

	return nil
}