除非很明确很简单,否则建议采用默认构造函数,其它参数通过属性设置或者其它方法传入
This commit is contained in:
parent
a99f2b0d68
commit
d04494e7cb
|
@ -9,57 +9,10 @@
|
|||
#endif
|
||||
|
||||
// 构造控制器
|
||||
Controller::Controller(ITransport* port)
|
||||
{
|
||||
assert_ptr(port);
|
||||
|
||||
debug_printf("\r\nTinyNet::Init 传输口:%s\r\n", port->ToString());
|
||||
|
||||
// 注册收到数据事件
|
||||
port->Register(Dispatch, this);
|
||||
|
||||
_ports.Add(port);
|
||||
|
||||
Init();
|
||||
|
||||
//_ports[_portCount++] = port;
|
||||
}
|
||||
|
||||
Controller::Controller(ITransport* ports[], int count)
|
||||
{
|
||||
assert_ptr(ports);
|
||||
assert_param(count > 0 && count < ArrayLength(_ports));
|
||||
|
||||
debug_printf("\r\nTinyNet::Init 共[%d]个传输口", count);
|
||||
for(int i=0; i<count && i<4; i++)
|
||||
{
|
||||
assert_ptr(ports[i]);
|
||||
|
||||
debug_printf(" %s", ports[i]->ToString());
|
||||
//_ports[_portCount++] = ports[i];
|
||||
_ports.Add(ports[i]);
|
||||
}
|
||||
debug_printf("\r\n");
|
||||
|
||||
// 注册收到数据事件
|
||||
for(int i=0; i<count; i++)
|
||||
{
|
||||
ports[i]->Register(Dispatch, this);
|
||||
}
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
void Controller::Init()
|
||||
Controller::Controller()
|
||||
{
|
||||
MinSize = 0;
|
||||
|
||||
//ArrayZero(_ports);
|
||||
//_portCount = 0;
|
||||
|
||||
//ArrayZero(_Handlers);
|
||||
//_HandlerCount = 0;
|
||||
|
||||
Received = NULL;
|
||||
Param = NULL;
|
||||
}
|
||||
|
@ -67,18 +20,7 @@ void Controller::Init()
|
|||
Controller::~Controller()
|
||||
{
|
||||
_Handlers.DeleteAll().Clear();
|
||||
/*for(int i=0; i<_HandlerCount; i++)
|
||||
{
|
||||
if(_Handlers[i]) delete _Handlers[i];
|
||||
}*/
|
||||
|
||||
_ports.DeleteAll().Clear();
|
||||
/*for(int i=0; i<_ports.Count(); i++)
|
||||
{
|
||||
delete _ports[i];
|
||||
//_ports[i] = NULL;
|
||||
}
|
||||
_ports.Clear();*/
|
||||
|
||||
debug_printf("TinyNet::UnInit\r\n");
|
||||
}
|
||||
|
@ -91,12 +33,18 @@ void Controller::AddTransport(ITransport* port)
|
|||
|
||||
debug_printf("\r\nTinyNet::AddTransport 添加传输口:%s\r\n", port->ToString());
|
||||
|
||||
// 注册收到数据事件
|
||||
port->Register(Dispatch, this);
|
||||
|
||||
_ports.Add(port);
|
||||
}
|
||||
|
||||
void Controller::Open()
|
||||
{
|
||||
assert_param(_ports.Count() > 0);
|
||||
|
||||
// 注册收到数据事件
|
||||
for(int i=0; i<_ports.Count(); i++)
|
||||
_ports[i]->Register(Dispatch, this);
|
||||
}
|
||||
|
||||
uint Controller::Dispatch(ITransport* transport, byte* buf, uint len, void* param)
|
||||
{
|
||||
assert_ptr(buf);
|
||||
|
|
|
@ -16,12 +16,10 @@ typedef bool (*MessageHandler)(Message& msg, void* param);
|
|||
class Controller
|
||||
{
|
||||
private:
|
||||
void Init();
|
||||
static uint Dispatch(ITransport* transport, byte* buf, uint len, void* param);
|
||||
|
||||
protected:
|
||||
List<ITransport*> _ports; // 数据传输口数组
|
||||
//byte _portCount; // 数据传输口个数
|
||||
byte MinSize; // 最小消息大小
|
||||
|
||||
virtual bool Dispatch(Stream& ms, Message* pmsg, ITransport* port);
|
||||
|
@ -31,12 +29,12 @@ protected:
|
|||
virtual bool OnReceive(Message& msg, ITransport* port);
|
||||
|
||||
public:
|
||||
Controller(ITransport* port);
|
||||
Controller(ITransport* ports[], int count);
|
||||
Controller();
|
||||
virtual ~Controller();
|
||||
|
||||
// 添加传输口
|
||||
void AddTransport(ITransport* port);
|
||||
virtual void Open();
|
||||
|
||||
// 创建消息
|
||||
virtual Message* Create() const = 0;
|
||||
|
@ -57,7 +55,6 @@ private:
|
|||
void* Param; // 参数
|
||||
};
|
||||
List<HandlerLookup*> _Handlers;
|
||||
//byte _HandlerCount;
|
||||
|
||||
public:
|
||||
// 注册消息处理器。考虑到业务情况,不需要取消注册
|
||||
|
|
|
@ -162,17 +162,7 @@ void TinyMessage::Show() const
|
|||
}
|
||||
|
||||
// 构造控制器
|
||||
TinyController::TinyController(ITransport* port) : Controller(port)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
TinyController::TinyController(ITransport* ports[], int count) : Controller(ports, count)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
void TinyController::Init()
|
||||
TinyController::TinyController() : Controller()
|
||||
{
|
||||
_Sequence = 0;
|
||||
_taskID = 0;
|
||||
|
@ -191,9 +181,19 @@ void TinyController::Init()
|
|||
Time.Sleep(3);
|
||||
Address = Time.Current();
|
||||
}
|
||||
}
|
||||
|
||||
TinyController::~TinyController()
|
||||
{
|
||||
if(_taskID) Sys.RemoveTask(_taskID);
|
||||
}
|
||||
|
||||
void TinyController::Open()
|
||||
{
|
||||
debug_printf("TinyNet::Inited Address=%d (0x%02x) 使用[%d]个传输接口\r\n", Address, Address, _ports.Count());
|
||||
|
||||
Controller::Open();
|
||||
|
||||
if(!_taskID)
|
||||
{
|
||||
debug_printf("TinyNet::微网消息队列 ");
|
||||
|
@ -202,8 +202,6 @@ void TinyController::Init()
|
|||
Sys.SetTask(_taskID, false);
|
||||
}
|
||||
|
||||
//Total.Send = Total.Ack = Total.Bytes = Total.Cost = TotalRetry = Total.Msg = 0;
|
||||
//Last.Send = Last.Ack = Last.Bytes = Last.Cost = LastRetry = Last.Msg = 0;
|
||||
memset(&Total, 0, sizeof(Total));
|
||||
memset(&Last, 0, sizeof(Last));
|
||||
|
||||
|
@ -212,11 +210,6 @@ void TinyController::Init()
|
|||
Sys.AddTask(StatTask, this, 1000000, 5000000);
|
||||
}
|
||||
|
||||
TinyController::~TinyController()
|
||||
{
|
||||
if(_taskID) Sys.RemoveTask(_taskID);
|
||||
}
|
||||
|
||||
// 创建消息
|
||||
Message* TinyController::Create() const
|
||||
{
|
||||
|
@ -227,7 +220,6 @@ void ShowMessage(TinyMessage& msg, bool send, ITransport* port = NULL)
|
|||
{
|
||||
if(msg.Ack) return;
|
||||
|
||||
//msg_printf("%d ", (uint)Time.Current());
|
||||
if(send)
|
||||
msg_printf("TinyMessage::Send ");
|
||||
else
|
||||
|
@ -552,13 +544,6 @@ int TinyController::Reply(Message& msg, ITransport* port)
|
|||
return Send(msg, port);
|
||||
}
|
||||
|
||||
/*bool TinyController::Error(TinyMessage& msg, ITransport* port)
|
||||
{
|
||||
msg.Error = 1;
|
||||
|
||||
return Send(msg, 0, port);
|
||||
}*/
|
||||
|
||||
void StatTask(void* param)
|
||||
{
|
||||
assert_ptr(param);
|
||||
|
|
|
@ -115,8 +115,6 @@ private:
|
|||
RingQueue _Ring; // 环形队列
|
||||
uint _taskID; // 发送队列任务
|
||||
|
||||
void Init();
|
||||
|
||||
void AckRequest(TinyMessage& msg, ITransport* port); // 处理收到的Ack包
|
||||
void AckResponse(TinyMessage& msg, ITransport* port); // 向对方发出Ack包
|
||||
|
||||
|
@ -130,10 +128,11 @@ public:
|
|||
uint Interval; // 消息队列发送间隔,微秒
|
||||
uint Timeout; // 消息队列发送消息的默认超时时间,50毫秒
|
||||
|
||||
TinyController(ITransport* port);
|
||||
TinyController(ITransport* ports[], int count);
|
||||
TinyController();
|
||||
virtual ~TinyController();
|
||||
|
||||
virtual void Open();
|
||||
|
||||
// 创建消息
|
||||
virtual Message* Create() const;
|
||||
// 发送消息,传输口参数为空时向所有传输口发送消息
|
||||
|
|
|
@ -88,27 +88,22 @@ void TokenMessage::Show() const
|
|||
#endif
|
||||
}
|
||||
|
||||
TokenController::TokenController(ITransport* port) : Controller(port)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
TokenController::TokenController(ITransport* ports[], int count) : Controller(ports, count)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
void TokenController::Init()
|
||||
TokenController::TokenController() : Controller()
|
||||
{
|
||||
Token = 0;
|
||||
|
||||
debug_printf("TokenNet::Inited 使用[%d]个传输接口 %s\r\n", _ports.Count(), _ports[0]->ToString());
|
||||
|
||||
MinSize = TokenMessage::MinSize;
|
||||
|
||||
_Response = NULL;
|
||||
}
|
||||
|
||||
void TokenController::Open()
|
||||
{
|
||||
debug_printf("TokenNet::Inited 使用[%d]个传输接口 %s\r\n", _ports.Count(), _ports[0]->ToString());
|
||||
|
||||
Controller::Open();
|
||||
}
|
||||
|
||||
// 创建消息
|
||||
Message* TokenController::Create() const
|
||||
{
|
||||
|
|
|
@ -48,7 +48,6 @@ public:
|
|||
class TokenController : public Controller
|
||||
{
|
||||
private:
|
||||
void Init();
|
||||
|
||||
protected:
|
||||
virtual bool Dispatch(Stream& ms, Message* pmsg, ITransport* port);
|
||||
|
@ -60,9 +59,9 @@ protected:
|
|||
public:
|
||||
uint Token; // 令牌
|
||||
|
||||
TokenController(ITransport* port);
|
||||
TokenController(ITransport* ports[], int count);
|
||||
//virtual ~TokenController();
|
||||
TokenController();
|
||||
|
||||
virtual void Open();
|
||||
|
||||
// 创建消息
|
||||
virtual Message* Create() const;
|
||||
|
|
Loading…
Reference in New Issue