外部调整发送队列大小,网关默认64个

This commit is contained in:
nnhy 2015-12-12 01:34:04 +00:00
parent b44b6c8fec
commit e6bc135853
3 changed files with 19 additions and 7 deletions

View File

@ -215,7 +215,9 @@ TinyController::TinyController() : Controller()
Timeout = 200;
_taskID = 0;
ArrayZero(_Queue);
//ArrayZero(_Queue);
_Queue = NULL;
QueueLength = 8;
}
TinyController::~TinyController()
@ -250,6 +252,9 @@ void TinyController::Open()
Controller::Open();
// 初始化发送队列
_Queue = new MessageNode[QueueLength];
if(!_taskID)
{
_taskID = Sys.AddTask(SendTask, this, 0, 1, "微网队列");
@ -441,7 +446,7 @@ void TinyController::AckRequest(const TinyMessage& msg)
{
if(!msg.Ack && !msg.Reply) return;
for(int i=0; i<ArrayLength(_Queue); i++)
for(int i=0; i<QueueLength; i++)
{
auto& node = _Queue[i];
if(node.Using && node.Seq == msg.Seq)
@ -482,7 +487,7 @@ bool TinyController::AckResponse(const TinyMessage& msg)
TS("TinyController::AckResponse");
for(int i=0; i<ArrayLength(_Queue); i++)
for(int i=0; i<QueueLength; i++)
{
auto& node = _Queue[i];
if(node.Using && node.Seq == msg.Seq)
@ -583,7 +588,7 @@ bool TinyController::Post(const TinyMessage& msg, int msTimeout)
// 准备消息队列
MessageNode* node = NULL;
for(int i=0; i<ArrayLength(_Queue); i++)
for(int i=0; i<QueueLength; i++)
{
if(!_Queue[i].Using)
{
@ -634,7 +639,7 @@ void TinyController::Loop()
*/
int count = 0;
for(int i=0; i<ArrayLength(_Queue); i++)
for(int i=0; i<QueueLength; i++)
{
auto& node = _Queue[i];
if(!node.Using) continue;

View File

@ -113,7 +113,7 @@ public:
class TinyController : public Controller
{
private:
MessageNode _Queue[8]; // 消息队列。最多允许8个消息同时等待响应
MessageNode* _Queue; // 消息队列。允许多少个消息同时等待响应
RingQueue _Ring; // 环形队列
uint _taskID; // 发送队列任务
@ -131,6 +131,7 @@ public:
byte Mode; // 接收模式。0只收自己1接收自己和广播2接收所有。默认0
ushort Interval; // 队列发送间隔默认10ms
short Timeout; // 队列发送超时默认50ms。如果不需要超时重发那么直接设置为-1
byte QueueLength;// 队列长度默认8
TinyController();
virtual ~TinyController();

View File

@ -126,9 +126,15 @@ TinyServer* Token::CreateServer(ITransport* port)
static TinyController ctrl;
ctrl.Port = port;
ctrl.QueueLength = 64;
// 只有2401需要打开重发机制
if(strcmp(port->ToString(), "R24") != 0) ctrl.Timeout = -1;
if(strcmp(port->ToString(), "R24") != 0)
{
//ctrl.Timeout = -1;
ctrl.Interval = 200;
ctrl.Timeout = 1000;
}
auto tc = TinyConfig::Current;
tc->Address = ctrl.Address;