/* GetTopicDetails is a Client RPC method allowing clients to discover details about a topic. */ func (handler *RPCHandler) GetTopicDetails(args *rapi.GetTopicDetailsArgs, results *rapi.GetTopicDetailsResults) error { node := handler.server.GetNode(args.Topic) if node != nil { return node.GetTopicDetails(args, results) } else { results.Result = rapi.Get_RI_TOPIC_NOT_FOUND(handler.server.address, args.Topic) return nil } }
func (node *Node) GetTopicDetails(args *rapi.GetTopicDetailsArgs, results *rapi.GetTopicDetailsResults) error { state := node.getState() var err error if state == SHUTDOWN_NODE { results.Result = rapi.Get_RI_NODE_IN_SHUTDOWN(node.name) return nil } results.FirstIndex, err = node.log.FirstIndex() if err != nil { results.Result = rapi.Get_RI_INTERNAL_ERROR(node.name, err.Error()) return nil } results.LastIndex, err = node.log.LastIndex() if err != nil { results.Result = rapi.Get_RI_INTERNAL_ERROR(node.name, err.Error()) return nil } results.CommitIndex = node.log.GetCurrentCommit() results.Result = rapi.Get_RI_SUCCESS() return nil }