package model

import (
	"github.com/globalsign/mgo/bson"
	"mongo.games.com/goserver/core/logger"
	"time"
)

type CrashHashAtom struct {
	CrashHashAtomId bson.ObjectId `bson:"_id"`
	Wheel           int           //第几轮
	Hash            string        //服务器Hash
}

func NewCrashHashAtom() *CrashHashAtom {
	crashhash := &CrashHashAtom{CrashHashAtomId: bson.NewObjectId()}
	return crashhash
}

type HashAtomIsExistArg struct {
	Wheel int //第几轮
}
type HashAtomRet struct {
	Hash []*CrashHashAtom
	Tag  int
}

func InsertCrashHashAtom(wheel int, hashstr string) (*CrashHashAtom, int) {
	if rpcCli == nil {
		return nil, 4
	}

	hash := NewCrashHashAtom()
	if hash == nil {
		return nil, 4
	}

	hash.Wheel = wheel
	hash.Hash = hashstr

	ret := &HashAtomRet{}
	err := rpcCli.CallWithTimeout("CrashHashAtomSvc.InsertCrashHashAtom", hash, ret, time.Second*30)
	if err != nil {
		return nil, 0
	}
	return nil, ret.Tag
}

type HashAtomIdArg struct {
	Wheel int
}

//func GetCrashHashAtom(wheel int) (*HashRet, error) {
//	if rpcCli == nil {
//		return nil, ErrRPClientNoConn
//	}
//	args := &HashIdArg{
//		Wheel: wheel,
//	}
//	var ret *HashRet
//	err := rpcCli.CallWithTimeout("CrashHashAtomSvc.GetCrashHashAtom", args, ret, time.Second*30)
//	if err != nil {
//		return nil, err
//	}
//	return ret, err
//}

func GetCrashHashAtom(wheel int) (data []*CrashHashAtom) {
	if rpcCli == nil {
		return
	}
	args := &HashAtomIdArg{
		Wheel: wheel,
	}
	ret := &HashAtomRet{}
	err := rpcCli.CallWithTimeout("CrashHashAtomSvc.GetCrashHashAtom", args, ret, time.Second*30)
	if err != nil {
		logger.Logger.Error("Get GetCrashHashAtom data eror.", err)
	}
	return ret.Hash
}
