本文整理汇总了Golang中github.com/cmu440/tribbler/rpc/tribrpc.GetTribblesReply类的典型用法代码示例。如果您正苦于以下问题:Golang GetTribblesReply类的具体用法?Golang GetTribblesReply怎么用?Golang GetTribblesReply使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GetTribblesReply类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
userkey := util.FormatUserKey(args.UserID)
_, userErr := ts.libstore.Get(userkey)
if userErr != nil {
reply.Status = tribrpc.NoSuchUser
} else {
reply.Status = tribrpc.OK
subskey := util.FormatSubListKey(args.UserID)
subsList, _ := ts.libstore.GetList(subskey)
totalTribList := make(Tribbles, 0)
for i := 0; i < len(subsList); i++ {
curUser := subsList[i]
curtribList := ts.GetTribblesOneUser(curUser)
for j := 0; j < len(curtribList); j++ {
totalTribList = append(totalTribList, curtribList[j])
}
//totalTribList = append(totalTribList, curtribList)
}
sort.Sort(totalTribList)
totalLen := len(totalTribList)
if totalLen > 100 {
totalLen = 100
}
reply.Tribbles = make(Tribbles, totalLen)
for j := 0; j < totalLen; j++ {
reply.Tribbles[j] = totalTribList[j]
}
}
return nil
}
开发者ID:wentianqi7,项目名称:15640-distributed-systems,代码行数:35,代码来源:tribserver_impl.go
示例2: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
user := args.UserID
_, err := ts.Libstore.Get(user)
switch err {
case nil: // expected case, do nothing
case libstore.ErrorKeyNotFound:
reply.Status = tribrpc.NoSuchUser
return nil
default:
return err
}
subscListKey := makeSubscListKey(user)
subscList, err := ts.Libstore.GetList(subscListKey)
switch err {
case nil:
case libstore.ErrorKeyNotFound:
reply.Tribbles = make([]tribrpc.Tribble, 0)
reply.Status = tribrpc.OK
return nil
default:
return err
}
tribbles, err := ts.getTribsFromSubs(subscList)
if err != nil { // ignore error
// return err
}
reply.Tribbles = tribbles
reply.Status = tribrpc.OK
return nil
}
开发者ID:oldady,项目名称:ds_p2,代码行数:34,代码来源:tribserver_impl.go
示例3: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
key := util.FormatUserKey(args.UserID)
if ts.checkIfKnown(key) {
triblist_key := util.FormatTribListKey(args.UserID)
post_ids, err := ts.storage.GetList(triblist_key)
if err != nil {
post_ids = []string{}
}
sort.Sort(ByChrono(post_ids))
bound := min(100, len(post_ids))
tribs := make([]tribrpc.Tribble, bound)
for i, v := range post_ids[0:bound] {
postStr, err := ts.storage.Get(v)
if err != nil {
return err
}
trib := tribrpc.Tribble{}
json.Unmarshal([]byte(postStr), &trib)
tribs[i] = trib
}
reply.Tribbles = tribs
reply.Status = tribrpc.OK
} else {
reply.Status = tribrpc.NoSuchUser
}
return nil
}
开发者ID:jbuckman,项目名称:p2-440,代码行数:27,代码来源:tribserver_impl.go
示例4: GetTribblesBySubscription
/*
-format sublist
*/
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
if DBG {
fmt.Println("-----> GetTribblesBySubscription")
}
var usrID string = args.UserID
//check if user present in server
_, err := ts.libStore.Get(util.FormatUserKey(usrID))
if err != nil {
switch err.Error() {
case WRONG_SERVER:
fmt.Println("ERROR: WRONG SERVER in tribserver")
return errors.New("Wrong server contacted!")
case KEY_NOT_FOUND:
reply.Status = tribrpc.NoSuchUser
return nil
default:
fmt.Println("ERROR in tribserver: wrong error message received")
}
}
//get list of subscribers
subscrList, err := ts.libStore.GetList(util.FormatSubListKey(usrID))
if err != nil {
//return err
fmt.Println("No subscribers, or error getting list of subscribers")
reply.Status = tribrpc.OK
return nil
}
//initialise empty slice of all postKeys from subscribers
var allPostKeys []string = make([]string, 0)
//populate allPostKeys
for _, currUser := range subscrList {
currPostKeys, err := ts.libStore.GetList(util.FormatTribListKey(currUser))
if err == nil {
allPostKeys = append(allPostKeys, currPostKeys...)
} else {
//fmt.Println("0 tribs for user detected")
}
}
sort.Sort(PostByTime(allPostKeys))
//choose most recent posts, and get tribbles
var tribList []tribrpc.Tribble = ts.getTribbleList(allPostKeys)
reply.Tribbles = tribList
reply.Status = tribrpc.OK
return nil
}
开发者ID:aditij1,项目名称:p2aditijakkamat,代码行数:63,代码来源:tribserver_impl.go
示例5: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
// Getsublist by key
// Get tribble list by user_ids in sublist
// sort the tribble list by the timestamp
// retrive the first 100 tribble (Be careful about the delete operation)
user_id := util.FormatUserKey(args.UserID)
// If the user_id doesn't exist
// Reture NoSuchUser
_, err := ts.lib_store.Get(user_id)
if err != nil {
reply.Status = tribrpc.NoSuchUser
return nil
}
// Get user's subscription_list
user_id_list := util.FormatSubListKey(args.UserID)
// list of IDs
user_list, _ := ts.lib_store.GetList(user_id_list)
if user_list == nil {
reply.Status = tribrpc.OK
return nil
}
// Get tribble_ids from the user_ids in the subscription list
tribble_id_list := make([]string, 0)
for _, usr_id := range user_list {
t_id_list, err := ts.lib_store.GetList(util.FormatTribListKey(usr_id))
if err == nil {
tribble_id_list = append(tribble_id_list, t_id_list...)
}
}
sort.Sort(SortTribbleByTimestamp(tribble_id_list))
counter := 0
tribble_list := make([]tribrpc.Tribble, 100)
for _, tid := range tribble_id_list {
tribble, err := ts.lib_store.Get(tid)
if err == nil {
json.Unmarshal([]byte(tribble), &tribble_list[counter])
counter += 1
}
if counter >= 100 {
break
}
}
reply.Status = tribrpc.OK
reply.Tribbles = tribble_list[:counter]
return nil
}
开发者ID:mallocanswer,项目名称:Tribbler,代码行数:53,代码来源:tribserver_impl.go
示例6: GetTribbles
/*
-getList, formatTribListKey to get all the post keys
-Slice it off at 100
-reverse it or wtv (if needed)
-Get() with that post key, and get the marshalled tribble
*/
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
if DBG {
fmt.Println("-----> GetTribbles")
}
var usrID string = args.UserID
//check if user present in server
_, err := ts.libStore.Get(util.FormatUserKey(usrID))
if err != nil {
switch err.Error() {
case WRONG_SERVER:
fmt.Println("ERROR: WRONG SERVER in tribserver")
return errors.New("Wrong server contacted!")
case KEY_NOT_FOUND:
reply.Status = tribrpc.NoSuchUser
return nil
default:
fmt.Println("ERROR in tribserver: wrong error message received")
}
}
postKeysList, err := ts.libStore.GetList(util.FormatTribListKey(usrID))
if err != nil {
//fmt.Println("Could not get list of postKeys for user")
//return empty tribble list, as the list is not yet created (0 tribbles)
switch err.Error() {
case KEY_NOT_FOUND:
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0)
return nil
case WRONG_SERVER:
fmt.Println("WRONG SERVER CONTACTED!")
return nil
default:
fmt.Println("ERROR in tribserver: wrong error message received!")
return nil
}
}
reply.Status = tribrpc.OK
reply.Tribbles = ts.getTribbleList(postKeysList)
return nil
}
开发者ID:aditij1,项目名称:p2aditijakkamat,代码行数:57,代码来源:tribserver_impl.go
示例7: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
if ts.userExist(args.UserID) == false {
reply.Status = tribrpc.NoSuchUser
return nil
}
tribbles, err := ts.GetAllTribblesByUser(args.UserID)
if err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0)
return nil
}
reply.Status = tribrpc.OK
reply.Tribbles = prepareTribbles(tribbles)
return nil
}
开发者ID:thuhujin,项目名称:Tribbler,代码行数:15,代码来源:tribserver_impl.go
示例8: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
userid := args.UserID
useridkey := util.FormatUserKey(userid)
_, userExists := ts.ls.Get(useridkey)
if userExists != nil {
reply.Status = tribrpc.NoSuchUser
return nil
}
userTribListKey := util.FormatTribListKey(userid)
tribbleIdList, err := ts.ls.GetList(userTribListKey)
if err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = nil
return nil
}
tmp := tribbleIDs(tribbleIdList)
sort.Sort(tmp)
tribbleIdsChrono := []string(tmp)
// Calculate the length of the tribbles we want to get
length := 100
if len(tribbleIdsChrono) < 100 {
length = len(tribbleIdsChrono)
}
allTribbles := make([]tribrpc.Tribble, length)
var tribTmp tribrpc.Tribble
i := 0
for i < length {
trib, err := ts.ls.Get(tribbleIdsChrono[i])
if err == nil {
json.Unmarshal([]byte(trib), &tribTmp)
allTribbles[i] = tribTmp
i += 1 // If error occurs, we do NOT increment i
}
}
reply.Status = tribrpc.OK
reply.Tribbles = allTribbles
return nil
}
开发者ID:iedwardwangi,项目名称:Tribbler,代码行数:47,代码来源:tribserver_impl.go
示例9: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
if ts.userExist(args.UserID) == false {
reply.Status = tribrpc.NoSuchUser
return nil
}
subscriptions, err := ts.ls.GetList(util.FormatSubListKey(args.UserID))
if err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0)
return nil
}
reply.Tribbles = make([]tribrpc.Tribble, 0)
mychan := make(chan []tribrpc.Tribble, 1000)
go func() {
for i := 0; i < len(subscriptions); i++ {
user := subscriptions[i]
go func() {
tribbles, _ := ts.GetAllTribblesByUser(user)
mychan <- tribbles
}()
}
}()
for i := 0; i < len(subscriptions); i++ {
tribbles := <-mychan
reply.Tribbles = append(reply.Tribbles, tribbles...)
}
reply.Status = tribrpc.OK
reply.Tribbles = prepareTribbles(reply.Tribbles)
return nil
}
开发者ID:thuhujin,项目名称:Tribbler,代码行数:30,代码来源:tribserver_impl.go
示例10: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
user := args.UserID
_, err := ts.Libstore.Get(user)
switch err {
case nil: // expected case, do nothing
case libstore.ErrorKeyNotFound:
reply.Status = tribrpc.NoSuchUser
return nil
default:
return err
}
tribListKey := makeTribListKey(user)
totalHashIds, err := ts.Libstore.GetList(tribListKey)
switch err {
case nil:
case libstore.ErrorKeyNotFound:
reply.Tribbles = make([]tribrpc.Tribble, 0)
reply.Status = tribrpc.OK
return nil
default:
return err
}
// reverse hash Id to achieve most recent tribbles first.
length := Min(len(totalHashIds), maxGetTribbleNum)
hashIds := make([]string, length)
for i := range hashIds {
hashIds[i] = totalHashIds[len(totalHashIds)-i-1]
}
tribValues, err := ts.getTribValuesFromHashIds(user, hashIds)
if err != nil { // ignore error
// return err
}
reply.Tribbles = makeTribbles(user, tribValues)
reply.Status = tribrpc.OK
return nil
}
开发者ID:oldady,项目名称:ds_p2,代码行数:42,代码来源:tribserver_impl.go
示例11: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
user_id := util.FormatUserKey(args.UserID)
// If the user_id doesn't exist
// Reture NoSuchUser
_, err := ts.lib_store.Get(user_id)
if err != nil {
fmt.Println(1)
reply.Status = tribrpc.NoSuchUser
return nil
}
// Return a list of tribble_ids
raw_tribble_list, _ := ts.lib_store.GetList(util.FormatTribListKey(args.UserID))
if raw_tribble_list == nil {
reply.Status = tribrpc.OK
return nil
}
// Sort the tribble_ids by timestamp reversely
sort.Sort(SortTribbleByTimestamp(raw_tribble_list))
counter := 0
tribble_list := make([]tribrpc.Tribble, 100)
for _, tid := range raw_tribble_list {
tribble, err := ts.lib_store.Get(tid)
if err == nil {
// var t tribrpc.Tribble
json.Unmarshal([]byte(tribble), &tribble_list[counter])
counter += 1
}
if counter >= 100 {
break
}
}
reply.Status = tribrpc.OK
reply.Tribbles = tribble_list[:counter]
return nil
}
开发者ID:mallocanswer,项目名称:Tribbler,代码行数:41,代码来源:tribserver_impl.go
示例12: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
UserKey := GenerateUserKey(args.UserID)
_, err := ts.lib.Get(UserKey)
if err != nil {
reply.Status = tribrpc.NoSuchUser
reply.Tribbles = nil
return nil
}
SubsKey := GenerateSubsKey(args.UserID)
SubsList, err := ts.lib.GetList(SubsKey)
if err != nil {
//reply.Status = tribrpc.NoSuchUser
reply.Status = tribrpc.OK
reply.Tribbles = nil
return nil
}
for i := 0; i < len(SubsList); i++ {
var Subargs tribrpc.GetTribblesArgs
var Subreply tribrpc.GetTribblesReply
Subargs.UserID = SubsList[i]
err = ts.GetTribbles(&Subargs, &Subreply)
if err != nil {
return err
}
reply.Tribbles = append(reply.Tribbles, Subreply.Tribbles...)
}
var tempTrib Tribs
tempTrib = reply.Tribbles
sort.Sort(tempTrib)
if len(tempTrib) > 100 {
reply.Status = tribrpc.OK
reply.Tribbles = tempTrib[:100]
} else {
reply.Status = tribrpc.OK
reply.Tribbles = tempTrib
}
return nil
}
开发者ID:oldady,项目名称:Tribbler,代码行数:45,代码来源:tribserver_impl.go
示例13: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
userkey := util.FormatUserKey(args.UserID)
// Make sure user exists
if _, eu := ts.ls.Get(userkey); eu != nil {
reply.Status = tribrpc.NoSuchUser
return nil
}
// Store list of marshalled Tribbles in lst. Return empty list if user had no subscriptions.
var lst []string
var err error
if lst, err = ts.ls.GetList(util.FormatTribListKey(args.UserID)); err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0)
return nil
}
// Find out how many posts we will return
var recentPosts []string
if len(lst) > 100 {
recentPosts = lst[len(lst)-100:]
} else {
recentPosts = lst
}
// Loop through this users Tribbles in reverse order and grab up to 100
tribbles := make([]tribrpc.Tribble, len(recentPosts))
var mtribble string
var tribble tribrpc.Tribble
for i := 0; i < len(tribbles); i++ {
mtribble, _ = ts.ls.Get(recentPosts[len(tribbles)-1-i])
json.Unmarshal([]byte(mtribble), &tribble)
tribbles[i] = tribble
}
reply.Status = tribrpc.OK
reply.Tribbles = tribbles
return nil
}
开发者ID:pyurky,项目名称:p2,代码行数:39,代码来源:tribserver_impl.go
示例14: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
LOGE.Printf("GetTribblesBySubscription:: args=%s\n", string(marshal(*args)))
userIDKey := GetUserKey(args.UserID)
_, err := ts.lib.Get(userIDKey)
if err != nil {
reply.Status = tribrpc.NoSuchUser
reply.Tribbles = nil
return nil
}
userTribleListKey := GetsSubsKey(args.UserID)
subsList, err := ts.lib.GetList(userTribleListKey)
if err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = nil
return nil
}
for i := 0; i < len(subsList); i++ {
var subArgs tribrpc.GetTribblesArgs
var subReply tribrpc.GetTribblesReply
subArgs.UserID = subsList[i]
err = ts.GetTribbles(&subArgs, &subReply)
if err != nil {
return err
}
reply.Tribbles = append(reply.Tribbles, subReply.Tribbles...)
}
var tempTribbles Tribs
tempTribbles = reply.Tribbles
sort.Sort(tempTribbles)
if len(tempTribbles) > 100 {
reply.Status = tribrpc.OK
reply.Tribbles = tempTribbles[:100]
} else {
reply.Status = tribrpc.OK
reply.Tribbles = tempTribbles
}
LOGE.Printf("GetTribblesBySubscription:: reply=%s\n", string(marshal(reply)))
return nil
}
开发者ID:201101050424,项目名称:Tribbler,代码行数:44,代码来源:tribserver_impl.go
示例15: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
//fmt.Println("get tribble begin!")
UserKey := GenerateUserKey(args.UserID)
_, err := ts.lib.Get(UserKey)
if err != nil {
reply.Status = tribrpc.NoSuchUser
reply.Tribbles = nil
return nil
}
TribListKey := GenerateTribListKey(args.UserID)
TribIDs, err := ts.lib.GetList(TribListKey)
if err != nil {
//reply.Status = tribrpc.NoSuchUser
//return nil
reply.Status = tribrpc.OK
return nil
}
//for i := 0; i < len(TribIDs); i++ {
// fmt.Println(TribIDs[i])
//}
var length int
length = len(TribIDs)
//fmt.Println("actual length:",length)
//log.Print(length)
if length > 100 {
length = 100
}
reply.Tribbles = make([]tribrpc.Tribble, length)
for i := 0; i < length; i++ {
//TribIDKey := GenerateTribIDKey(args.UserID, TribIDs[len(TribIDs)-1-i])
TribIDKey := TribIDs[len(TribIDs)-1-i]
val, err := ts.lib.Get(TribIDKey)
if err != nil {
// continue
reply.Status = tribrpc.NoSuchUser
return errors.New("get invalid tribble")
}
if val == "" {
return errors.New("empty string!!!!")
}
json.Unmarshal([]byte(val), &(reply.Tribbles[i]))
}
reply.Status = tribrpc.OK
//for i := 0; i < len(reply.Tribbles); i++ {
// fmt.Println("result of getting tribbles")
// fmt.Print(reply.Tribbles[i].UserID+" ")
// //fmt.Print(reply.Tribbles[i].Posted)
// fmt.Print(reply.Tribbles[i].Contents)
// fmt.Println()
//}
return nil
}
开发者ID:oldady,项目名称:Tribbler,代码行数:58,代码来源:tribserver_impl.go
示例16: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
userkey := util.FormatUserKey(args.UserID)
_, userErr := ts.libstore.Get(userkey)
if userErr != nil {
reply.Status = tribrpc.NoSuchUser
} else {
reply.Status = tribrpc.OK
tribList := ts.GetTribblesOneUser(args.UserID)
if tribList != nil {
length := len(tribList)
reply.Tribbles = make([]tribrpc.Tribble, length)
for i := 0; i < length; i++ {
reply.Tribbles[i] = tribList[i]
}
}
}
return nil
}
开发者ID:wentianqi7,项目名称:15640-distributed-systems,代码行数:23,代码来源:tribserver_impl.go
示例17: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
key := util.FormatUserKey(args.UserID)
if ts.checkIfKnown(key) {
sublist_key := util.FormatSubListKey(args.UserID)
sublist_ids, err := ts.storage.GetList(sublist_key)
if err != nil {
sublist_ids = []string{}
}
post_ids := []string{}
for _, userid := range sublist_ids {
triblist_key := util.FormatTribListKey(userid)
local_post_ids, err := ts.storage.GetList(triblist_key)
if err != nil {
sublist_ids = []string{}
}
post_ids = append(post_ids, local_post_ids...)
}
sort.Sort(ByChrono(post_ids))
tribs := []tribrpc.Tribble{}
for _, v := range post_ids[0:min(100, len(post_ids))] {
postStr, err := ts.storage.Get(v)
if err != nil {
return err
}
trib := tribrpc.Tribble{}
json.Unmarshal([]byte(postStr), &trib)
tribs = append(tribs, trib)
}
reply.Tribbles = tribs
reply.Status = tribrpc.OK
} else {
reply.Status = tribrpc.NoSuchUser
}
return nil
}
开发者ID:jbuckman,项目名称:p2-440,代码行数:37,代码来源:tribserver_impl.go
示例18: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
if args == nil {
return errors.New("ts: Can't getSubscription nil")
}
if reply == nil {
return errors.New("ts: Can't reply with nil in getSubscription")
}
_, err := ts.ls.Get(util.FormatUserKey(args.UserID))
if err != nil {
reply.Status = tribrpc.NoSuchUser
reply.Tribbles = make([]tribrpc.Tribble, 0, 0)
return nil
}
users, err := ts.ls.GetList(util.FormatSubListKey(args.UserID))
if err != nil {
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0, 0)
return nil
}
postIDs := make([]string, 0)
for _, userID := range users {
lst, err := ts.ls.GetList(util.FormatTribListKey(userID))
if err == nil {
postIDs = append(postIDs, lst...)
}
}
tmp := tribbleIDs(postIDs)
sort.Sort(tmp)
tribbleIdsChrono := []string(tmp)
length := 100
if len(tribbleIdsChrono) < 100 {
length = len(tribbleIdsChrono)
}
tribbles := make([]tribrpc.Tribble, length)
var tribTmp tribrpc.Tribble
i := 0
for i < length {
trib, err := ts.ls.Get(tribbleIdsChrono[i])
if err == nil {
json.Unmarshal([]byte(trib), &tribTmp)
tribbles[i] = tribTmp
i += 1 // If error occurs, we do NOT increment i
}
}
reply.Status = tribrpc.OK
reply.Tribbles = tribbles
return nil
}
开发者ID:iedwardwangi,项目名称:Tribbler,代码行数:55,代码来源:tribserver_impl.go
示例19: GetTribbles
func (ts *tribServer) GetTribbles(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
LOGE.Printf("GetTribbles:: args=%s\n", string(marshal(*args)))
userIDKey := GetUserKey(args.UserID)
_, err := ts.lib.Get(userIDKey)
if err != nil {
reply.Status = tribrpc.NoSuchUser
reply.Tribbles = nil
return nil
}
userTribleListKey := GetsTribleListKey(args.UserID)
tribles, err := ts.lib.GetList(userTribleListKey)
if err != nil {
reply.Status = tribrpc.OK
return nil
}
length := len(tribles)
if length > 100 {
length = 100
}
reply.Tribbles = make([]tribrpc.Tribble, length)
for i := 0; i < length; i++ {
triblePutKey := tribles[len(tribles)-1-i]
val, err := ts.lib.Get(triblePutKey)
if err != nil {
reply.Status = tribrpc.NoSuchUser
return err
}
json.Unmarshal([]byte(val), &(reply.Tribbles[i]))
}
reply.Status = tribrpc.OK
LOGE.Printf("GetTribbles:: reply=%s\n", string(marshal(reply)))
return nil
}
开发者ID:201101050424,项目名称:Tribbler,代码行数:37,代码来源:tribserver_impl.go
示例20: GetTribblesBySubscription
func (ts *tribServer) GetTribblesBySubscription(args *tribrpc.GetTribblesArgs, reply *tribrpc.GetTribblesReply) error {
userkey := util.FormatUserKey(args.UserID)
// Make sure user exists
if _, eu := ts.ls.Get(userkey); eu != nil {
reply.Status = tribrpc.NoSuchUser
return nil
}
// Get list of subscriptions. return empty list if user has no subscriptions.
var subs []string
var esubs error
if subs, esubs = ts.ls.GetList(util.FormatSubListKey(args.UserID)); esubs != nil {
reply.Status = tribrpc.OK
reply.Tribbles = make([]tribrpc.Tribble, 0)
return nil
}
numTribbles := 0
// Get the last 100 tribble IDs from each subscribed user
tribIDs := make([][]string, len(subs))
for i := 0; i < len(subs); i++ {
if lst, err := ts.ls.GetList(util.FormatTribListKey(subs[i])); err == nil {
if len(lst) > 100 {
tribIDs[i] = lst[len(lst)-100:]
} else {
tribIDs[i] = lst
}
numTribbles += len(lst)
}
}
// lastTribs is the most recent tribble seen from each subscribed user
lastTribs := make([]tribrpc.Tribble, len(subs))
// index is the list of indexes into tribIDs for each subscribed user
index := make([]int, len(subs))
if numTribbles > 100 {
numTribbles = 100
}
finalTribbles := make([]tribrpc.Tribble, numTribbles)
var mtribble string
var tribble tribrpc.Tribble
// valid[i] marks if an unused Tribble is located at lastTribs[i]
valid := make([]bool, len(lastTribs))
for j := 0; j < numTribbles; j++ {
minIndex := -1
for check := 0; check < len(lastTribs); check++ {
// If this user has more tribbles left
if index[check] < len(tribIDs[check]) {
// If we need to get a new tribble for this user
if valid[check] == false {
mtribble, _ = ts.ls.Get(tribIDs[check][len(tribIDs[check])-1-index[check]])
json.Unmarshal([]byte(mtribble), &tribble)
lastTribs[check] = tribble
valid[check] = true
}
// This tribble is more
if minIndex == -1 || cmpLessTribble(lastTribs[check], lastTribs[minIndex]) {
minIndex = check
}
}
}
copyTribble := lastTribs[minIndex]
finalTribbles[j] = copyTribble
valid[minIndex] = false
index[minIndex] += 1
}
reply.Status = tribrpc.OK
reply.Tribbles = finalTribbles
return nil
}
开发者ID:pyurky,项目名称:p2,代码行数:78,代码来源:tribserver_impl.go
注:本文中的github.com/cmu440/tribbler/rpc/tribrpc.GetTribblesReply类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论