You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/05/20 01:22:18 UTC
[09/13] incubator-mynewt-newt git commit: Adding Stats List Command
Adding Stats List Command
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/commit/4bd61be2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/4bd61be2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/4bd61be2
Branch: refs/heads/develop
Commit: 4bd61be2f5eee8dde9548f232e82833b7460d3ae
Parents: 4724388
Author: Vipul Rahane <vi...@runtime.io>
Authored: Wed Apr 27 18:38:26 2016 -0700
Committer: Vipul Rahane <vi...@runtime.io>
Committed: Tue May 17 12:39:53 2016 -0700
----------------------------------------------------------------------
newtmgr/cli/stats.go | 57 ++++++++++++++++++++++++++++++++++++++++++
newtmgr/protocol/stats.go | 46 ++++++++++++++++++++++++++++++++++
2 files changed, 103 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/4bd61be2/newtmgr/cli/stats.go
----------------------------------------------------------------------
diff --git a/newtmgr/cli/stats.go b/newtmgr/cli/stats.go
index 89f1298..6174182 100644
--- a/newtmgr/cli/stats.go
+++ b/newtmgr/cli/stats.go
@@ -28,6 +28,55 @@ import (
"mynewt.apache.org/newt/newtmgr/transport"
)
+func statsListRunCmd(cmd *cobra.Command, args []string) {
+ cpm, err := config.NewConnProfileMgr()
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ profile, err := cpm.GetConnProfile(ConnProfileName)
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ conn, err := transport.NewConn(profile)
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ runner, err := protocol.NewCmdRunner(conn)
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ slr, err := protocol.NewStatsListReq()
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ nmr, err := slr.Encode()
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ if err := runner.WriteReq(nmr); err != nil {
+ nmUsage(cmd, err)
+ }
+
+ rsp, err := runner.ReadResp()
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ slrsp, err := protocol.DecodeStatsListResponse(rsp.Data)
+ if err != nil {
+ nmUsage(cmd, err)
+ }
+
+ fmt.Println(slrsp.List)
+ fmt.Printf("Return Code = %d\n", slrsp.ReturnCode)
+}
+
func statsRunCmd(cmd *cobra.Command, args []string) {
cpm, err := config.NewConnProfileMgr()
if err != nil {
@@ -91,5 +140,13 @@ func statsCmd() *cobra.Command {
Run: statsRunCmd,
}
+ ListCmd := &cobra.Command{
+ Use: "list",
+ Short: "Read list of statistics from a remote endpoint",
+ Run: statsListRunCmd,
+ }
+
+ statsCmd.AddCommand(ListCmd)
+
return statsCmd
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/4bd61be2/newtmgr/protocol/stats.go
----------------------------------------------------------------------
diff --git a/newtmgr/protocol/stats.go b/newtmgr/protocol/stats.go
index b3c9aac..5a08bfc 100644
--- a/newtmgr/protocol/stats.go
+++ b/newtmgr/protocol/stats.go
@@ -28,12 +28,21 @@ import (
const (
STATS_NMGR_OP_READ = 0
+ STATS_NMGR_OP_LIST = 1
)
type StatsReadReq struct {
Name string `json:"name"`
}
+type StatsListReq struct {
+}
+
+type StatsListRsp struct {
+ ReturnCode int `json:"rc"`
+ List []string `json:"stat_list"`
+}
+
type StatsReadRsp struct {
ReturnCode int `json:"rc"`
Name string `json:"name"`
@@ -41,6 +50,12 @@ type StatsReadRsp struct {
Fields map[string]interface{} `json:"fields"`
}
+func NewStatsListReq() (*StatsListReq, error) {
+ s := &StatsListReq{}
+
+ return s, nil
+}
+
func NewStatsReadReq() (*StatsReadReq, error) {
s := &StatsReadReq{}
s.Name = ""
@@ -48,6 +63,37 @@ func NewStatsReadReq() (*StatsReadReq, error) {
return s, nil
}
+func DecodeStatsListResponse(data []byte) (*StatsListRsp, error) {
+ var resp StatsListRsp
+ err := json.Unmarshal(data, &resp)
+ if err != nil {
+ return nil, util.NewNewtError(fmt.Sprintf("Invalid incoming json: %s",
+ err.Error()))
+ }
+
+ return &resp, nil
+}
+
+func (sr *StatsListReq) Encode() (*NmgrReq, error) {
+ nmr, err := NewNmgrReq()
+ if err != nil {
+ return nil, err
+ }
+
+ nmr.Op = NMGR_OP_READ
+ nmr.Flags = 0
+ nmr.Group = NMGR_GROUP_ID_STATS
+ nmr.Id = STATS_NMGR_OP_LIST
+
+ req := &StatsListReq{}
+
+ data, _ := json.Marshal(req)
+ nmr.Data = data
+ nmr.Len = uint16(len(data))
+
+ return nmr, nil
+}
+
func (sr *StatsReadReq) Encode() (*NmgrReq, error) {
nmr, err := NewNmgrReq()
if err != nil {