Beispiel #1
0
func (c *Client) handleAcked(req server.ReqID, r *bufio.Reader) (res Response,
	err error) {

	q, err := r.ReadString(' ')
	if err != nil {
		return
	}
	q = q[:len(q)-1]

	s, err := r.ReadString(' ')
	if err != nil {
		return
	}

	tid, err := strconv.Atoi(string(s[:len(s)-1]))
	if err != nil {
		return
	}

	res = Response{
		ID: req,
		Data: server.Task{
			Queue: server.Queue(q),
			ID:    server.TaskID(tid),
		},
	}
	return
}
Beispiel #2
0
func (c *Client) handleEnQed(req server.ReqID, r *bufio.Reader) (res Response,
	err error) {

	q, err := r.ReadString(' ')
	if err != nil {
		return
	}
	q = q[:len(q)-1]

	s, err := r.ReadString('\n')
	if err != nil {
		return
	}
	s = s[:len(s)-1]

	tid, err := strconv.ParseUint(s, 10, 64)
	if err != nil {
		return
	}

	res = Response{
		ID:   req,
		Data: server.TaskID(tid),
	}
	return
}
Beispiel #3
0
func (c *Client) handleDeQed(req server.ReqID, r *bufio.Reader) (res Response,
	err error) {

	q, err := r.ReadString(' ')
	if err != nil {
		return
	}
	q = q[:len(q)-1]

	s, err := r.ReadString(' ')
	if err != nil {
		return
	}

	tid, err := strconv.Atoi(string(s[:len(s)-1]))
	if err != nil {
		return
	}

	s, err = r.ReadString(' ')
	if err != nil {
		return
	}

	l, err := strconv.Atoi(string(s[:len(s)-1]))
	if err != nil {
		return
	}

	var d []byte
	d = make([]byte, l)
	n, err := io.ReadAtLeast(r, d, l)
	if err != nil {
		return
	}
	if n != l {
		err = ErrInvalidResponse
		return
	}

	b, err := r.ReadByte()
	if err != nil {
		return
	}
	if b != '\n' {
		err = ErrInvalidResponse
		return
	}

	res = Response{
		ID: req,
		Data: server.Task{
			Queue: server.Queue(q),
			ID:    server.TaskID(tid),
			Body:  d,
		},
	}
	return
}