MCPcopy Index your code
hub / github.com/dearcode/candy / Friend

Method Friend

store/server.go:151–197  ·  view source on GitHub ↗

Friend 添加好友添加完后会返回当前好友关系状态.

(_ context.Context, req *meta.StoreFriendRequest)

Source from the content-addressed store, hash-verified

149
150// Friend 添加好友添加完后会返回当前好友关系状态.
151func (s *Store) Friend(_ context.Context, req *meta.StoreFriendRequest) (*meta.StoreFriendResponse, error) {
152 log.Debugf("Store Friend from:%v to:%v Operate:%v", req.From, req.To, req.Operate)
153 //这些事件都需要创建一个给对方的消息
154 var err error
155 switch req.Operate {
156 case meta.Relation_ADD:
157 //1.存储一个添加对方为好友的消息
158 //2.要给对方一个请求添加好友的消息
159 err = s.user.friend.set(req.From, req.To, req.Operate, req.Msg)
160
161 case meta.Relation_CONFIRM:
162 //1.存储一个确认添加为好友的消息
163 //2.要给对方一个确认添加好友的消息
164 err = s.user.friend.set(req.From, req.To, req.Operate, req.Msg)
165 if err == nil {
166 err = s.user.friend.confirm(req.To, req.From)
167 }
168
169 case meta.Relation_REFUSE:
170 //只需要给对方一个拒绝的消息就行
171
172 case meta.Relation_DEL:
173 //只需要给对方发个通知
174 err = s.user.friend.remove(req.From, req.To)
175 }
176
177 if err != nil {
178 log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err))
179 return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil
180 }
181
182 // 发个提示消息
183 id, err := s.master.NewID()
184 if err != nil {
185 log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err))
186 return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil
187 }
188
189 pm := meta.PushMessage{Event: meta.Event_Friend, Operate: req.Operate, Msg: &meta.Message{ID: id, From: req.From, To: req.To, Body: req.Msg}}
190 // 直接发送,如果失败会自动插入到重试队列中
191 if err := s.message.send(pm); err != nil {
192 log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err))
193 return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil
194 }
195
196 return &meta.StoreFriendResponse{}, nil
197}
198
199// LoadFriendList load user's friend list
200func (s *Store) LoadFriendList(_ context.Context, req *meta.StoreLoadFriendListRequest) (*meta.StoreLoadFriendListResponse, error) {

Callers

nothing calls this directly

Calls 5

setMethod · 0.80
confirmMethod · 0.80
removeMethod · 0.80
NewIDMethod · 0.65
sendMethod · 0.65

Tested by

no test coverage detected