Exemplo n.º 1
0
func commandStats(q queue.Queue, tokens []string, r *bufio.Reader, w *bufio.Writer) error {

	fields := len(tokens)
	if fields != 1 && fields != 2 {
		fmt.Fprint(w, CLIENT_ERROR_BADCMD_FORMAT)
		return errors.NotValidf("mc tokens %v ", tokens)
	}

	if fields == 1 {
		// TODO: implement stats command
		fmt.Fprint(w, END)
	} else if fields == 2 && strings.EqualFold(tokens[1], "queue") {
		accumulationInfos, err := q.AccumulationStatus()
		if err != nil {
			fmt.Fprintf(w, "%s %s\r\n", ENGINE_ERROR_PREFIX, err)
			return nil
		}
		for _, accumulationInfo := range accumulationInfos {
			fmt.Fprintf(w, "%s %s.%s %d/%d \r\n", "STAT",
				accumulationInfo.Group,
				accumulationInfo.Queue,
				accumulationInfo.Total,
				accumulationInfo.Consumed)
		}
		fmt.Fprint(w, END)
	} else {
		fmt.Fprint(w, ERROR)
	}
	return nil
}