Files
hjha-server/GlobalSever/MQ/WaitBeMsg.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

258 lines
6.6 KiB
C#

/*
* 由SharpDevelop创建。
* 用户: Administrator
* 日期: 2019-01-05
* 时间: 14:08
*
* 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
*/
using MrWu.Debug;
using MrWu.RabbitMQ;
using RabbitMQ.Client;
using Server.Pack;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using GameData;
namespace Server.MQ {
/// <summary>
/// 等待处理的消息
/// </summary>
public class WaitBeMsg {
///// <summary>
///// 查慢的原因用的,日志
///// </summary>
//public DateTime logTime;
// private ServerHead mhead;
/// <summary>
/// 消息内容
/// </summary>
public PackHead head;
/// <summary>
/// 包体数据
/// </summary>
public string jsondata;
/// <summary>
/// 包头+包体
/// </summary>
public string jsonmessage {
get {
return message.bodystr;
}
}
/// <summary>
/// 其他参数
/// </summary>
public List<object> pms;
/// <summary>
/// 步骤
/// </summary>
public int step = 0;
/// <summary>
/// 消息
/// </summary>
public Message message;
/// <summary>
/// 是否处理完自动确认 如果不是自动确认的话,消息需要手动确认,请清理消息内存
/// </summary>
public bool AutoAck;
/// <summary>
/// 交换机
/// </summary>
public string exchange {
get {
return message.exchange;
}
}
/// <summary>
/// 路由键
/// </summary>
public string routingkey {
get {
return message.routingkey;
}
}
/// <summary>
/// 消息属性
/// </summary>
public IBasicProperties propertis {
get {
return message.propertis;
}
}
/// <summary>
/// 用户数据
/// </summary>
public IDictionary<string, object> userData {
get {
return message.userData;
}
}
/// <summary>
/// 是否不需要确认
/// </summary>
public bool noAck {
get {
return message.noAck;
}
}
/// <summary>
/// 消息唯一id
/// </summary>
public string id {
get {
return message.id;
}
}
/// <summary>
/// 消息投递标签
/// </summary>
public ulong deliveryTag {
get {
return message.deliveryTag;
}
}
/// <summary>
/// 是否被重复接收过
/// </summary>
public bool redelivered {
get {
return message.redelivered;
}
}
/// <summary>
/// 是否确认过
/// </summary>
public bool isAck {
get;
private set;
}
/// <summary>
/// 是否要继续添加到消息列表中处理
/// </summary>
public bool isAdd;
/// <summary>
/// 数据
/// </summary>
public object[] datas { get; private set; } = new object[10];
/// <summary>
/// 上次的任务
/// </summary>
public Task task;
/// <summary>
/// 确认消息
/// </summary>
/// <param name="mulitple"></param>
/// <returns></returns>
public bool Ack(bool mulitple = false) {
if (isAck) {
Debug.Warning("消息已被确认过,请勿重复确认!");
return false;
}
isAck = true;
return message.Ack(mulitple);
}
/// <summary>
/// 是否被拒绝确认
/// </summary>
/// <param name="mulitple">是否多条消息</param>
/// <param name="requeue">是否重新入列</param>
/// <returns></returns>
public bool NAck(bool mulitple = false, bool requeue = false) {
if (isAck) {
Debug.Warning("消息已被确认过,请勿重复确认!");
return false;
}
isAck = true;
return message.NAck(mulitple, requeue);
}
/// <summary>
/// 清空数据
/// </summary>
internal void Clear() {
MessagePool.PutMessage(ref message);
isAck = false;
step = 0;
isAdd = false;
this.head = null;
this.jsondata = null;
this.pms = null;
this.task = null;
int len = datas.Length;
for (int i = 0; i < len; i++) {
datas[i] = null;
}
}
/// <summary>
///
/// </summary>
public WaitBeMsg() {
//this.message = msg;
//jsondata = JsonPack.GetPackHead(msg.bodystr, out head);
}
///// <summary>
/////
///// </summary>
///// <param name="msg"></param>
///// <param name="ack"></param>
//public WaitBeMsg(BasicGetResult msg, bool ack) {
// this.deliverytag = msg.DeliveryTag;
// jsonmessage = Encoding.UTF8.GetString(msg.Body);
// jsondata = JsonPack.GetPackHead(jsonmessage, out head);
// this.exchange = msg.Exchange;
// this.routingKey = msg.Exchange;
// this.ack = ack;
//}
///// <summary>
/////
///// </summary>
///// <param name="deliverytag"></param>
///// <param name="body"></param>
///// <param name="exchange"></param>
///// <param name="routingkey"></param>
///// <param name="ack"></param>
//public WaitBeMsg(ulong deliverytag, byte[] body, string exchange, string routingkey, bool ack) {
// this.deliverytag = deliverytag;
// jsonmessage = Encoding.UTF8.GetString(body);
// jsondata = JsonPack.GetPackHead(jsonmessage, out head);
// this.exchange = exchange;
// this.routingKey = routingkey;
// this.ack = ack;
//}
}
}