func rowFromTListColumns(key []byte, tl thrift.TList) *Row { if tl == nil || tl.Len() <= 0 { return nil } r := &Row{Key: key} for colI := range tl.Iter() { var col *cassandra.ColumnOrSuperColumn = colI.(*cassandra.ColumnOrSuperColumn) if col.Column != nil { c := &Column{ Name: col.Column.Name, Value: col.Column.Value, Timestamp: col.Column.Timestamp, Ttl: col.Column.Ttl, } r.Columns = append(r.Columns, c) } else if col.CounterColumn != nil { v, _ := Marshal(col.CounterColumn.Value, LongType) c := &Column{ Name: col.CounterColumn.Name, Value: v, } r.Columns = append(r.Columns, c) } } return r }
func (r *reader) SuperGet(key []byte) (*SuperRow, error) { if r.cf == "" { return nil, errors.New("No column family specified") } cp := r.buildColumnParent() sp := r.buildPredicate() var ret thrift.TMap var keys thrift.TList = thrift.NewTList(thrift.BINARY, 0) // size appears to be ignored in the thrift lib keys.Push(key) err := r.pool.run(func(c *connection) (*cassandra.InvalidRequestException, *cassandra.UnavailableException, *cassandra.TimedOutException, error) { var ire *cassandra.InvalidRequestException var ue *cassandra.UnavailableException var te *cassandra.TimedOutException var err error ret, ire, ue, te, err = c.client.MultigetSlice(keys, cp, sp, cassandra.ConsistencyLevel(r.consistencyLevel)) return ire, ue, te, err }) if err != nil { return nil, err } return rowFromTMapColumns(key, ret), nil }
func rowsFromTListKeySlice(tl thrift.TList) []*Row { if tl == nil || tl.Len() <= 0 { return make([]*Row, 0) } r := make([]*Row, 0) for keySliceI := range tl.Iter() { keySlice := keySliceI.(*cassandra.KeySlice) key := keySlice.Key row := rowFromTListColumns(key, keySlice.Columns) if row != nil { r = append(r, row) } } return r }
func (w *writer) addWriter(cf string, key []byte) *cassandra.Mutation { tm := cassandra.NewMutation() var cfMuts thrift.TMap im, exists := w.writers.Get(key) if !exists { cfMuts = thrift.NewTMap(thrift.STRING, thrift.LIST, 1) w.writers.Set(key, cfMuts) } else { cfMuts = im.(thrift.TMap) } var mutList thrift.TList im, exists = cfMuts.Get(cf) if !exists { mutList = thrift.NewTList(thrift.STRUCT, 1) cfMuts.Set(cf, mutList) } else { mutList = im.(thrift.TList) } mutList.Push(tm) return tm }