2012-05-22 20:05:39 +08:00
|
|
|
// Copyright 2011 - 2012 Xing Xing <mikespook@gmail.com>.
|
|
|
|
// All rights reserved.
|
2012-03-26 13:32:59 +08:00
|
|
|
// Use of this source code is governed by a MIT
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
2012-05-22 20:05:39 +08:00
|
|
|
package common
|
2012-03-26 13:32:59 +08:00
|
|
|
|
2012-06-26 14:32:26 +08:00
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"encoding/binary"
|
|
|
|
)
|
|
|
|
|
2012-03-26 13:32:59 +08:00
|
|
|
const (
|
2012-05-23 17:45:52 +08:00
|
|
|
NETWORK = "tcp"
|
2012-03-26 13:32:59 +08:00
|
|
|
// queue size
|
2012-12-27 13:41:33 +08:00
|
|
|
QUEUE_SIZE = 8
|
2012-03-26 13:32:59 +08:00
|
|
|
// read buffer size
|
2012-12-28 17:14:47 +08:00
|
|
|
BUFFER_SIZE = 1024
|
2012-12-28 21:19:58 +08:00
|
|
|
// min packet length
|
|
|
|
PACKET_LEN = 12
|
2012-03-26 13:32:59 +08:00
|
|
|
|
|
|
|
// \x00REQ
|
|
|
|
REQ = 5391697
|
|
|
|
REQ_STR = "\x00REQ"
|
|
|
|
// \x00RES
|
|
|
|
RES = 5391699
|
|
|
|
RES_STR = "\x00RES"
|
|
|
|
|
|
|
|
// package data type
|
|
|
|
CAN_DO = 1
|
|
|
|
CANT_DO = 2
|
|
|
|
RESET_ABILITIES = 3
|
|
|
|
PRE_SLEEP = 4
|
|
|
|
NOOP = 6
|
|
|
|
JOB_CREATED = 8
|
|
|
|
GRAB_JOB = 9
|
|
|
|
NO_JOB = 10
|
|
|
|
JOB_ASSIGN = 11
|
|
|
|
WORK_STATUS = 12
|
|
|
|
WORK_COMPLETE = 13
|
|
|
|
WORK_FAIL = 14
|
|
|
|
GET_STATUS = 15
|
|
|
|
ECHO_REQ = 16
|
|
|
|
ECHO_RES = 17
|
|
|
|
ERROR = 19
|
|
|
|
STATUS_RES = 20
|
|
|
|
SET_CLIENT_ID = 22
|
|
|
|
CAN_DO_TIMEOUT = 23
|
|
|
|
WORK_EXCEPTION = 25
|
|
|
|
WORK_DATA = 28
|
|
|
|
WORK_WARNING = 29
|
|
|
|
GRAB_JOB_UNIQ = 30
|
|
|
|
JOB_ASSIGN_UNIQ = 31
|
|
|
|
|
|
|
|
SUBMIT_JOB = 7
|
|
|
|
SUBMIT_JOB_BG = 18
|
|
|
|
SUBMIT_JOB_HIGH = 21
|
|
|
|
SUBMIT_JOB_HIGH_BG = 32
|
|
|
|
SUBMIT_JOB_LOW = 33
|
|
|
|
SUBMIT_JOB_LOW_BG = 34
|
|
|
|
)
|
|
|
|
|
|
|
|
// Decode [4]byte to uint32
|
|
|
|
func BytesToUint32(buf [4]byte) uint32 {
|
2012-06-26 14:32:26 +08:00
|
|
|
var r uint32
|
|
|
|
b := bytes.NewBuffer(buf[:])
|
|
|
|
err := binary.Read(b, binary.BigEndian, &r)
|
|
|
|
if err != nil {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
return r
|
2012-03-26 13:32:59 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Encode uint32 to [4]byte
|
2012-05-22 20:05:39 +08:00
|
|
|
func Uint32ToBytes(i uint32) [4]byte {
|
2012-06-26 14:32:26 +08:00
|
|
|
buf := new(bytes.Buffer)
|
|
|
|
err := binary.Write(buf, binary.BigEndian, i)
|
|
|
|
if err != nil {
|
|
|
|
return [4]byte{0, 0, 0, 0}
|
|
|
|
}
|
|
|
|
var r [4]byte
|
|
|
|
for k, v := range buf.Bytes() {
|
|
|
|
r[k] = v
|
|
|
|
}
|
|
|
|
return r
|
2012-03-26 13:32:59 +08:00
|
|
|
}
|