示例#1
0
func handleClient(conn net.Conn, dict dictionary.Dictionary) {
	defer conn.Close()

	msg, ok := protocol.ReadMessage(conn)
	if !ok {
		return
	}

	fmt.Println(msg)

	errorMsg := "7: Error"
	successMsg := "6: Success"
	var retMsg string

	switch msg[0] {
	case '1': // get
		key := msg[3:]
		value, ok := dict.Get(key)
		if ok {
			retMsg = "5: " + value
		} else {
			retMsg = errorMsg
		}

	case '2': // add
		split := strings.Split(msg[3:], "\t")
		key, value := split[0], split[1]
		ok := dict.Add(key, value)
		if ok {
			retMsg = successMsg
		} else {
			retMsg = errorMsg
		}

	case '3': // remove
		key := msg[3:]
		ok := dict.Remove(key)
		if ok {
			retMsg = successMsg
		} else {
			retMsg = errorMsg
		}

	case '4': // update
		split := strings.Split(msg[3:], "\t")
		key, value := split[0], split[1]
		ok := dict.Update(key, value)
		if ok {
			retMsg = successMsg
		} else {
			retMsg = errorMsg
		}

	case '8': // server get

	}

	protocol.WriteMessage(conn, retMsg)
}
示例#2
0
func query(server Server, message string) string {
	conn, err := net.Dial("tcp", server.ip+":"+strconv.Itoa(server.port))
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	protocol.WriteMessage(conn, message)
	msg, ok := protocol.ReadMessage(conn)
	if !ok {
		panic("OMG")
	}

	return msg
}