MCPcopy Create free account
hub / github.com/diillson/chatcli / ReadConversation

Method ReadConversation

server/handler_hub.go:137–158  ·  view source on GitHub ↗

ReadConversation returns events after since_seq (hydration / resume).

(ctx context.Context, req *pb.ReadConversationRequest)

Source from the content-addressed store, hash-verified

135
136// ReadConversation returns events after since_seq (hydration / resume).
137func (h *Handler) ReadConversation(ctx context.Context, req *pb.ReadConversationRequest) (*pb.ReadConversationResponse, error) {
138 if err := h.hubReady(); err != nil {
139 return nil, err
140 }
141 principal, err := h.hubPrincipal(ctx, "")
142 if err != nil {
143 return nil, err
144 }
145 if err := h.authorizeConv(ctx, req.GetConvId(), principal); err != nil {
146 return nil, err
147 }
148 events, err := h.hub.Read(ctx, req.GetConvId(), req.GetSinceSeq(), int(req.GetLimit()))
149 if err != nil {
150 h.logger.Error("hub read failed", zap.String("conv_id", req.GetConvId()), zap.Error(err))
151 return nil, status.Errorf(codes.Internal, "%s", i18n.T("server.hub.read_error", err))
152 }
153 out := make([]*pb.ConversationEvent, 0, len(events))
154 for _, ev := range events {
155 out = append(out, eventToProto(ev))
156 }
157 return &pb.ReadConversationResponse{Events: out}, nil
158}
159
160// SubscribeConversation live-tails a conversation. It streams the backlog after
161// since_seq, then live events. On consumer overflow the stream ends with

Callers

nothing calls this directly

Calls 12

hubReadyMethod · 0.95
hubPrincipalMethod · 0.95
authorizeConvMethod · 0.95
TFunction · 0.92
eventToProtoFunction · 0.85
GetLimitMethod · 0.80
ErrorfMethod · 0.80
ReadMethod · 0.65
ErrorMethod · 0.65
GetConvIdMethod · 0.45
GetSinceSeqMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected