예제 #1
0
파일: reader.go 프로젝트: ngmoco/gossie
func rowFromTMapColumns(key []byte, tm thrift.TMap) *SuperRow {
	if tm == nil || tm.Len() <= 0 {
		return nil
	}
	r := &SuperRow{Key: key}

	for ele := range tm.Iter() {
		//fmt.Printf("K: %s V: %+v %T\n", ele.Key(), ele.Value(), ele.Value())
		tl := ele.Value().(thrift.TList)
		for colI := range tl.Iter() {
			var col *cassandra.ColumnOrSuperColumn = colI.(*cassandra.ColumnOrSuperColumn)
			row := &Row{Key: col.SuperColumn.Name}
			r.Rows = append(r.Rows, row)
			//fmt.Printf("\tSCName: %s\n", col.SuperColumn.Name)
			//fmt.Printf("Columns: %+v %T\n", col.SuperColumn.Columns, col.SuperColumn.Columns)
			for colX := range col.SuperColumn.Columns.Iter() {
				theRealCol := colX.(*cassandra.Column)
				c := &Column{
					Name:      theRealCol.Name,
					Value:     theRealCol.Value,
					Timestamp: theRealCol.Timestamp,
					Ttl:       theRealCol.Ttl,
				}
				row.Columns = append(row.Columns, c)
				//fmt.Printf("\t\tcol: %s %s\n",theRealCol.Name, theRealCol.Value)
			}
		}
	}
	return r
}
예제 #2
0
파일: reader.go 프로젝트: rcrowley/gossie
func rowsColumnCountFromTMap(tm thrift.TMap) []*RowColumnCount {
	if tm == nil || tm.Len() <= 0 {
		return make([]*RowColumnCount, 0)
	}
	r := make([]*RowColumnCount, 0)
	for rowI := range tm.Iter() {
		key := keyFromTMap(rowI)
		count := int((rowI.Value()).(int32))
		if count > 0 {
			r = append(r, &RowColumnCount{Key: key, Count: count})
		}
	}
	return r
}
예제 #3
0
파일: reader.go 프로젝트: rcrowley/gossie
func rowsFromTMap(tm thrift.TMap) []*Row {
	if tm == nil || tm.Len() <= 0 {
		return make([]*Row, 0)
	}
	r := make([]*Row, 0)
	for rowI := range tm.Iter() {
		key := keyFromTMap(rowI)
		columns := (rowI.Value()).(thrift.TList)
		row := rowFromTListColumns(key, columns)
		if row != nil {
			r = append(r, row)
		}
	}
	return r
}
예제 #4
0
파일: writer.go 프로젝트: carloscm/gossie
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
}