// 加载公会历史消息
func loadUnionHistoryMessage(unionId string) {
	// 判断是否已经加载过公会的历史消息文件
	if ifHasLoaded(unionId) {
		return
	}

	// 判断是否存在文件夹
	if !fileUtil.IsDirExists(con_HistoryPath) {
		return
	}

	// 读取公会对应文件内容
	bytes, err := fileUtil.ReadFileBytes(filepath.Join(con_HistoryPath, getUnionHistoryMessageFileName(unionId)))
	if err != nil {
		// 判断文件是否存在,如果不存在直接返回
		if os.IsNotExist(err) {
			return
		}

		panic(fmt.Errorf("加载公会历史消息错误,错误信息为:%s", err))
	}

	// 反序列化文件
	messageList := make([]*responseDataObject.SocketResponseObject, 0, configBLL.MaxHistoryCount())
	if err = json.Unmarshal(bytes, &messageList); err != nil {
		panic(fmt.Errorf("反序列化公会历史消息错误,错误信息为:%s", err))
	}

	// 加锁
	unionHistoryMessageMutex.Lock()
	defer unionHistoryMessageMutex.Unlock()

	// 保存到unionHistoryMessageList中
	unionHistoryMessageList[unionId] = messageList
}
Example #2
0
func init() {
	if configBLL.IfRecordMessage() == false {
		return
	}

	// 判断文件夹是否存在,如果不存在则创建
	if !fileUtil.IsDirExists(messageFolderPath) {
		os.MkdirAll(messageFolderPath, os.ModePerm|os.ModeTemporary)
	}

	// 启动新Gorountine来处理消息
	go recordMessage()
}
// 加载世界历史消息
func loadWorldHistoryMessage() {
	// 判断是否存在文件夹
	if !fileUtil.IsDirExists(con_HistoryPath) {
		return
	}

	// 读取文件内容
	bytes, err := fileUtil.ReadFileBytes(filepath.Join(con_HistoryPath, getWorldHistoryMessageFileName()))
	if err != nil {
		// 判断文件是否存在,如果不存在直接返回
		if os.IsNotExist(err) {
			return
		}

		panic(fmt.Errorf("加载世界历史消息错误,错误信息为:%s", err))
	}

	if err = json.Unmarshal(bytes, &worldHistoryMessageList); err != nil {
		panic(fmt.Errorf("反序列化世界历史消息错误,错误信息为:%s", err))
	}
}
Example #4
0
func writeLog(logObj *logObject) {
	// 获取当前时间
	now := time.Now()

	// 获得年、月、日、时的字符串形式
	yearString := strconv.Itoa(now.Year())
	monthString := strconv.Itoa(int(now.Month()))
	dayString := strconv.Itoa(now.Day())
	hourString := strconv.Itoa(now.Hour())

	// 构造文件路径和文件名
	filePath := filepath.Join(logPath, yearString, monthString)
	fileName := ""
	if logObj.ifIncludeHour {
		fileName = fmt.Sprintf("%s-%s-%s-%s.%s.%s", yearString, monthString, dayString, hourString, logObj.level, con_FILE_SUFFIX)
	} else {
		fileName = fmt.Sprintf("%s-%s-%s.%s.%s", yearString, monthString, dayString, logObj.level, con_FILE_SUFFIX)
	}

	// 得到最终的fileName
	fileName = filepath.Join(filePath, fileName)

	// 判断文件夹是否存在,如果不存在则创建
	if !fileUtil.IsDirExists(filePath) {
		if err := os.MkdirAll(filePath, os.ModePerm|os.ModeTemporary); err != nil {
			return
		}
	}

	// 打开文件(如果文件存在就以读写模式打开,并追加写入;如果文件不存在就创建,然后以读写模式打开。)
	f, err := os.OpenFile(fileName, os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm|os.ModeTemporary)
	if err != nil {
		return
	}
	defer f.Close()

	// 写入内容
	f.WriteString(logObj.logInfo)
}