From 22866616cd3b5179360f1242c87a3d5eb02ba38d Mon Sep 17 00:00:00 2001 From: Jonathan Wills Date: Sun, 29 May 2011 01:54:02 -0400 Subject: [PATCH] splitByteArray -> bytes.Split, fixed bug in the process. --- src/pkg/gearman/client.go | 3 ++- src/pkg/gearman/client/job.go | 5 +++-- src/pkg/gearman/gearman.go | 25 ++----------------------- src/pkg/gearman/worker.go | 3 ++- 4 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/pkg/gearman/client.go b/src/pkg/gearman/client.go index e04d9bf..eeb9536 100644 --- a/src/pkg/gearman/client.go +++ b/src/pkg/gearman/client.go @@ -10,6 +10,7 @@ import ( "sync" // "log" "strconv" + "bytes" ) /* @@ -204,7 +205,7 @@ func (client *Client) Status(handle string) (known, running bool, numerator, den if job, err = client.readLastJob(STATUS_RES); err != nil { return } - data := splitByteArray(job.Data, '\x00', 5) + data := bytes.Split(job.Data, []byte{'\x00'}, 5) if len(data) != 5 { err = os.NewError("Data Error.") return diff --git a/src/pkg/gearman/client/job.go b/src/pkg/gearman/client/job.go index 4513866..009284a 100644 --- a/src/pkg/gearman/client/job.go +++ b/src/pkg/gearman/client/job.go @@ -6,6 +6,7 @@ package gearman import ( "os" + "bytes" // "log" ) @@ -65,7 +66,7 @@ func (job *ClientJob) Result() (data []byte, err os.Error) { err = os.NewError("Work exception.") fallthrough case WORK_COMPLETE: - s := splitByteArray(job.Data, '\x00', 2) + s := bytes.Split(job.Data, []byte{'\x00'}, 2) if len(s) != 2 { err = os.NewError("Invalid data.") return @@ -84,7 +85,7 @@ func (job *ClientJob) Update() (data []byte, err os.Error) { err = os.NewError("The job is not a update.") return } - s := splitByteArray(job.Data, '\x00', 2) + s := bytes.Split(job.Data, []byte{'\x00'}, 2) if len(s) != 2 { err = os.NewError("Invalid data.") return diff --git a/src/pkg/gearman/gearman.go b/src/pkg/gearman/gearman.go index b56496c..2f2d938 100644 --- a/src/pkg/gearman/gearman.go +++ b/src/pkg/gearman/gearman.go @@ -10,6 +10,7 @@ The protocol was implemented by native way. package gearman import ( + "bytes" "os" ) @@ -84,31 +85,9 @@ type Job interface { Encode() []byte } -// Splite the byte array by a byte -func splitByteArray(slice []byte, spot byte, limit int) (data [][]byte) { - data = make([][]byte, 0, 10) - start, end := 0, 0 - for i, v := range slice { - if v == spot { - if start != end { - data = append(data, slice[start:end]) - if (limit > 0) && (limit - 1 == len(data)) { - start = end - break - } - } - start, end = i+1, i+1 - } else { - end++ - } - } - data = append(data, slice[start:]) - return -} - // Extract the error message func getError(data []byte) (eno os.Errno, err os.Error) { - rel := splitByteArray(data, '\x00', 2) + rel := bytes.Split(data, []byte{'\x00'}, 2) if len(rel) != 2 { err = os.NewError("The input is not a error data.") return diff --git a/src/pkg/gearman/worker.go b/src/pkg/gearman/worker.go index 020c401..a3927cc 100644 --- a/src/pkg/gearman/worker.go +++ b/src/pkg/gearman/worker.go @@ -7,6 +7,7 @@ package gearman import ( "os" "sync" + "bytes" // "log" ) @@ -223,7 +224,7 @@ func (worker *Worker) exec(job *WorkerJob) (err os.Error) { } else { limit = 4 } - jobdata := splitByteArray(job.Data, '\x00', limit) + jobdata := bytes.Split(job.Data, []byte{'\x00'}, limit) job.Handle = string(jobdata[0]) funcname := string(jobdata[1]) if job.DataType == JOB_ASSIGN {