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 {