|
- // Copyright 2011 - 2012 Xing Xing <mikespook@gmail.com>.
- // All rights reserved.
- // Use of this source code is governed by a MIT
- // license that can be found in the LICENSE file.
-
- package common
-
- import (
- "bytes"
- "encoding/binary"
- )
-
- const (
- NETWORK = "tcp"
- // queue size
- QUEUE_SIZE = 8
- // read buffer size
- BUFFER_SIZE = 1024
- // min packet length
- PACKET_LEN = 12
-
- // \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 {
- var r uint32
- b := bytes.NewBuffer(buf[:])
- err := binary.Read(b, binary.BigEndian, &r)
- if err != nil {
- return 0
- }
- return r
- }
-
- // Encode uint32 to [4]byte
- func Uint32ToBytes(i uint32) [4]byte {
- 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
- }
|