forked from yuxh/gearman-go
		
	read more
This commit is contained in:
		
							parent
							
								
									fee531f9c1
								
							
						
					
					
						commit
						cd1bd72a80
					
				@ -108,9 +108,13 @@ func (a *agent) Work() {
 | 
			
		||||
 | 
			
		||||
// Internal read
 | 
			
		||||
func (a *agent) read() (data []byte, err error) {
 | 
			
		||||
    if len(a.in) > 0 {
 | 
			
		||||
BEGIN:
 | 
			
		||||
    inlen := len(a.in)
 | 
			
		||||
    if inlen > 0 {
 | 
			
		||||
        // in queue is not empty
 | 
			
		||||
        data = <-a.in
 | 
			
		||||
        for i := 0; i < inlen; i ++ {
 | 
			
		||||
            data = append(data, <-a.in...)
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        for {
 | 
			
		||||
            buf := make([]byte, common.BUFFER_SIZE)
 | 
			
		||||
@ -137,7 +141,7 @@ func (a *agent) read() (data []byte, err error) {
 | 
			
		||||
    for i := 0; i < tl; i++ {
 | 
			
		||||
        if string(data[start:start+4]) == common.RES_STR {
 | 
			
		||||
            l := int(common.BytesToUint32([4]byte{data[start+8],
 | 
			
		||||
                data[start+9], data[start+10], data[start+11]}))
 | 
			
		||||
            data[start+9], data[start+10], data[start+11]}))
 | 
			
		||||
            total := l + 12
 | 
			
		||||
            if total == tl { // data is what we want
 | 
			
		||||
                return
 | 
			
		||||
@ -145,8 +149,8 @@ func (a *agent) read() (data []byte, err error) {
 | 
			
		||||
                a.in <- data[total:]
 | 
			
		||||
                data = data[:total]
 | 
			
		||||
                return
 | 
			
		||||
            } else { // ops! 
 | 
			
		||||
                break
 | 
			
		||||
            } else { // ops! It won't be possible.
 | 
			
		||||
                goto BEGIN
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            start++
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user