added batch enpoint

This commit is contained in:
Todd Gruben 2014-01-17 19:27:51 -06:00
parent ccd36e351e
commit 59234b9eb2

50
core/batch.go Normal file
View file

@ -0,0 +1,50 @@
package core
import (
"encoding/gob"
"pilosa/db"
. "pilosa/util"
"tux21b.org/v1/gocql/uuid"
)
type BatchRequest struct {
Id *uuid.UUID
Source *uuid.UUID
Fragment_id SUUID
Bitmap_id uint64
Compressed_bitmap string
}
type BatchResponse struct {
Id *uuid.UUID
}
func (self BatchResponse) ResultId() *uuid.UUID {
return self.Id
}
func (self BatchResponse) ResultData() interface{} {
return self.Id
}
func init() {
gob.Register(BatchRequest{})
gob.Register(BatchResponse{})
}
func (self *Service) Batch(database_name, frame, compressed_bitmap string, bitmap_id uint64, slice int) error {
//determine the fragment_id from database/frame/slice
database := self.Cluster.GetOrCreateDatabase(database_name)
oslice := database.GetOrCreateSlice(slice)
//need to find processid and fragment id for that slice
fragment, _ := database.GetFragmentForBitmap(oslice, &db.Bitmap{bitmap_id, frame})
id := uuid.RandomUUID()
batch := db.Message{Data: BatchRequest{Id: &id, Source: self.Id, Fragment_id: fragment.GetId(), Bitmap_id: bitmap_id, Compressed_bitmap: compressed_bitmap}}
dest_id := fragment.GetProcess().Id()
self.Transport.Send(&batch, &dest_id)
_, err := self.Hold.Get(&id, 60)
return err
}