package main

import (
	"mongo.games.com/goserver/core/module"
)

//var MonitorMgrSington = &MonitorMgr{}

type MonitorMgr struct {
}

func (this *MonitorMgr) ModuleName() string {
	return "MonitorMgr"
}

func (this *MonitorMgr) Init() {

}

func (this *MonitorMgr) Update() {
	//logic stats
	//logicStats := profile.GetStats()
	//if len(logicStats) > 0 {
	//	logLogic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", logicStats)
	//	if logLogic != nil {
	//		task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//			return model.UpsertMonitorData("logic", logLogic)
	//		}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//	}
	//}
	//
	////net session stats
	//netStats := netlib.Stats()
	//if len(netStats) > 0 {
	//	logNet := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", netStats)
	//	if logNet != nil {
	//		task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//			return model.UpsertMonitorData("net", logNet)
	//		}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//	}
	//}
	//
	////schedule stats
	//jobStats := schedule.Stats()
	//if len(jobStats) > 0 {
	//	logJob := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", jobStats)
	//	if logJob != nil {
	//		task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//			return model.UpsertMonitorData("job", logJob)
	//		}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//	}
	//}
	//
	////trans stats
	//transStats := transact.Stats()
	//if len(transStats) > 0 {
	//	logTrans := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", transStats)
	//	if logTrans != nil {
	//		task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//			return model.UpsertMonitorData("transact", logTrans)
	//		}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//	}
	//}
	//
	////panic stats
	//panicStats := utils.GetPanicStats()
	//if len(panicStats) > 0 {
	//	for key, stats := range panicStats {
	//		logPanic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, stats)
	//		if logPanic != nil {
	//			task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//				return model.UpsertMonitorData("panic", logPanic)
	//			}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//		}
	//	}
	//}
	//
	////object command quene stats
	//objStats := core.AppCtx.GetStats()
	//if len(objStats) > 0 {
	//	logCmd := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "obj", objStats)
	//	if logCmd != nil {
	//		task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//			return model.UpsertMonitorData("cmdque", logCmd)
	//		}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//	}
	//}
	//
	////gorouting count, eg. system info
	//runtimeStats := utils.StatsRuntime()
	//logRuntime := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", runtimeStats)
	//if logRuntime != nil {
	//	task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
	//		return model.InsertMonitorData("runtime", logRuntime)
	//	}), nil, "InsertMonitorData").StartByFixExecutor("monitor")
	//}
}

func (this *MonitorMgr) Shutdown() {
	module.UnregisteModule(this)
}

func init() {
	//gob registe
	//gob.Register(profile.TimeElement{})
	//gob.Register(map[string]profile.TimeElement{})
	//gob.Register(netlib.ServiceStats{})
	//gob.Register(map[int]netlib.ServiceStats{})
	//gob.Register(schedule.TaskStats{})
	//gob.Register(map[string]schedule.TaskStats{})
	//gob.Register(transact.TransStats{})
	//gob.Register(map[int]transact.TransStats{})
	//gob.Register(utils.PanicStackInfo{})
	//gob.Register(map[string]utils.PanicStackInfo{})
	//gob.Register(basic.CmdStats{})
	//gob.Register(map[string]basic.CmdStats{})
	//gob.Register(utils.RuntimeStats{})
	//gob registe

	//module.RegisteModule(MonitorMgrSington, time.Minute*5, 0)
}
