📄 socket_transmit_protocol_handler.cpp
字号:
// SOCKET_Transmit_Protocol_Handler.cpp: implementation of the SOCKET_Transmit_Protocol_Handler class.
//
//////////////////////////////////////////////////////////////////////
#include "SOCKET_Transmit_Protocol_Handler.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SOCKET_Transmit_Protocol_Handler* SOCKET_Transmit_Protocol_Handler::pinstance = NULL;// 初始化指针
/*
initial, make sure the relate module get the single object
*/
SOCKET_Transmit_Protocol_Handler::SOCKET_Transmit_Protocol_Handler()
{
activity_list_manager_ptr=SOCKET_ACTIVITY_LIST_Handler::get_instance();
rudp_enunpacket_manager_ptr=RUDP_EnUnPacket_Handler::get_instance();
retransmit_timing2_ptr=SOCKET_ReTransmit_Timing2_Protocol_Handler::get_instance();
socket_sr_ptr=Socket_SR::get_instance();
sequence_manager_ptr=SOCKET_Sequence_Manager::get_instance();
// sequence_manager_ptr->add(5);
}
SOCKET_Transmit_Protocol_Handler::~SOCKET_Transmit_Protocol_Handler()
{
}
/*
factory pattern, make sure there is only one object of this class
*/
SOCKET_Transmit_Protocol_Handler* SOCKET_Transmit_Protocol_Handler::get_instance()
{
if (pinstance == NULL)
{
pinstance = new SOCKET_Transmit_Protocol_Handler;
}
return pinstance;
}
/*
the message's attribute,get the destination's address from activity_list_manager
revise the packet's sequence number from sequence_manager
judge T2_ITEM_STR from SOCKET_ReTransmit_Timing2_Protocol_Handler
then send the RUDP packet to the destination (each time only one packet is to be sended)
*/
bool SOCKET_Transmit_Protocol_Handler::f_SOCKET_Transmit_Protocol_Handler(Message *msg)
{
Addr_Str addr_str;
RUDP rudp;
unsigned int seq;
addr_str = activity_list_manager_ptr->f_Find_ip_and_port_by_deviceID(msg->Data[0]);
seq=sequence_manager_ptr->f_get_sequence(msg->Data[0]);
rudp = rudp_enunpacket_manager_ptr->f_enRUDPPacket(msg->Data[0],msg->Data[0],'0',sizeof(RUDP)+msg->Length,seq);
// sequence_manager_ptr->add(msg->Data[0]);
while(1)
{
if(retransmit_timing2_ptr->is_empty())
{
retransmit_timing2_ptr->f_SOCKET_Timing2_Add(seq ,msg,addr_str,&rudp);
sequence_manager_ptr->f_get_sequence_packet(msg->Data[0]);
break;
}
}
// socket_sr_ptr->create_des_address((char*)&addr_str.ip,addr_str.port);
// socket_sr_ptr->socket_init();
socket_sr_ptr->create_des_address("192.168.32.9",6666);
socket_sr_ptr->app_rudp(rudp,msg->DataPtr, msg->Length);
socket_sr_ptr->send();
cout<<"发送包 包类型:"<<rudp.packet_type<<"包序列号:"<<rudp.packet_seq<<endl;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -