func (objClient *ObjectClient) getObjects(hashes []hash.Hash) ( *ObjectsReader, error) { client, err := srpc.DialHTTP("tcp", objClient.address) if err != nil { return nil, errors.New(fmt.Sprintf("Error dialing\t%s\n", err)) } conn, err := client.Call("ObjectServer.GetObjects") if err != nil { return nil, errors.New(fmt.Sprintf("Error calling\t%s\n", err)) } var request objectserver.GetObjectsRequest var reply objectserver.GetObjectsResponse request.Exclusive = objClient.exclusiveGet request.Hashes = hashes encoder := gob.NewEncoder(conn) encoder.Encode(request) conn.Flush() var objectsReader ObjectsReader objectsReader.client = client objectsReader.reader = conn decoder := gob.NewDecoder(objectsReader.reader) err = decoder.Decode(&reply) if err != nil { return nil, err } if reply.ResponseString != "" { return nil, errors.New(reply.ResponseString) } objectsReader.nextIndex = -1 objectsReader.sizes = reply.ObjectSizes return &objectsReader, nil }
func (objClient *ObjectClient) getObjects(hashes []hash.Hash) ( *ObjectsReader, error) { conn, err := dial("tcp", objClient.address) if err != nil { return nil, errors.New(fmt.Sprintf("Error dialing\t%s\n", err)) } var request objectserver.GetObjectsRequest var reply objectserver.GetObjectsResponse request.Exclusive = objClient.exclusiveGet request.Hashes = hashes decoder := gob.NewDecoder(conn) encoder := gob.NewEncoder(conn) encoder.Encode(request) err = decoder.Decode(&reply) if err != nil { return nil, err } if reply.ResponseString != "" { return nil, errors.New(reply.ResponseString) } var objectsReader ObjectsReader objectsReader.nextIndex = -1 objectsReader.sizes = reply.ObjectSizes objectsReader.conn = conn return &objectsReader, nil }