package gate

import (
	"Open_IM/pkg/common/config"

	"Open_IM/pkg/statistics"
	"fmt"
	"github.com/go-playground/validator/v10"
	"sync"
)

var (
	rwLock       *sync.RWMutex
	validate     *validator.Validate
	ws           WServer
	rpcSvr       RPCServer
	sendMsgCount uint64
	userCount    uint64
)

func Init(rpcPort, wsPort int) {
	//log initialization

	rwLock = new(sync.RWMutex)
	validate = validator.New()
	statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 300)
	statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", userCount), 300)
	ws.onInit(wsPort)
	rpcSvr.onInit(rpcPort)
}

func Run() {
	go ws.run()
	go rpcSvr.run()
}