📄 socket_retransmit_timing2_protocol_handler.cpp
字号:
// SOCKET_ReTransmit_Timing2_Protocol_Handler.cpp: implementation of the SOCKET_ReTransmit_Timing2_Protocol_Handler class.
//
//////////////////////////////////////////////////////////////////////
#include "SOCKET_ReTransmit_Timing2_Protocol_Handler.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SOCKET_ReTransmit_Timing2_Protocol_Handler* SOCKET_ReTransmit_Timing2_Protocol_Handler::pinstance = NULL;// 初始化指针
vector<T2_ITEM_STR> SOCKET_ReTransmit_Timing2_Protocol_Handler::m_T2_ReTransmit_Queue_vector;
unsigned short SOCKET_ReTransmit_Timing2_Protocol_Handler::t2_vector_length=0;
Socket_SR* SOCKET_ReTransmit_Timing2_Protocol_Handler::socket_sr_re_ptr;
SOCKET_ReTransmit_Timing2_Protocol_Handler::SOCKET_ReTransmit_Timing2_Protocol_Handler()
{
t2_vector_length=0;
init(f_SOCKET_Timing2_Scan);
socket_sr_re_ptr=Socket_SR::get_instance();
}
SOCKET_ReTransmit_Timing2_Protocol_Handler::~SOCKET_ReTransmit_Timing2_Protocol_Handler()
{
}
/*
factory pattern, make sure there is only one object of this class
*/
SOCKET_ReTransmit_Timing2_Protocol_Handler* SOCKET_ReTransmit_Timing2_Protocol_Handler::get_instance ()
{
if (pinstance == NULL)
{
pinstance = new SOCKET_ReTransmit_Timing2_Protocol_Handler;
}
return pinstance;
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_Add(unsigned int seq_packet ,Message *msg_temp ,Addr_Str addr_str,RUDP* rudp)
{
if(t2_vector_length<1)
{
T2_ITEM_STR t2_item_str;
t2_item_str.deviceID=msg_temp->Data[0];
t2_item_str.msg=*msg_temp;
t2_item_str.N=5;
t2_item_str.packet_ptr=msg_temp->DataPtr;
t2_item_str.T=current_num;
t2_item_str.rudp=*rudp;
t2_item_str.RUDP_Seq=seq_packet;
t2_item_str.addr_str=addr_str;
m_T2_ReTransmit_Queue_vector.push_back(t2_item_str);
t2_vector_length=t2_vector_length + 1;
return true;
}
else
{
return false;
}
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_Remove(unsigned int deviceID,unsigned int packet_seq)
{
vector<T2_ITEM_STR>::iterator iter;
A_FIND_STR a_find;
a_find.type=0;
a_find.deviceID=deviceID;
a_find.seq=packet_seq;
if((iter=find(m_T2_ReTransmit_Queue_vector.begin(),m_T2_ReTransmit_Queue_vector.end(),a_find))!=m_T2_ReTransmit_Queue_vector.end())
{
m_T2_ReTransmit_Queue_vector.erase(iter);
t2_vector_length=t2_vector_length-1;
}
else
{
cout<<"the element is not found!"<<endl;
cout<<endl;
}
return true;
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_Remove(vector<T2_ITEM_STR>::iterator iter_temp)
{
m_T2_ReTransmit_Queue_vector.erase(iter_temp);
return true;
}
void SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_ReSet(unsigned int deviceID,unsigned int packet_seq)
{
vector<T2_ITEM_STR>::iterator iter;
A_FIND_STR a_find;
a_find.type=0;
a_find.deviceID=deviceID;
a_find.seq=packet_seq;
if((iter=find(m_T2_ReTransmit_Queue_vector.begin(),m_T2_ReTransmit_Queue_vector.end(),a_find))!=m_T2_ReTransmit_Queue_vector.end())
{
iter->N=iter->N-1;
iter->T=iter->T-1;
}
else
{
cout<<"the element is not found!"<<endl;
cout<<endl;
}
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_TimeNumOut(vector<T2_ITEM_STR>::iterator iter_temp)
{
Message msg=Socket_Create_Message_Protocol_Handler::f_SOCKET_App_Send_Failure(&iter_temp->msg);
m_T2_ReTransmit_Queue_vector.erase(iter_temp);
return 1;
}
Message SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_find_item(unsigned int deviceID,unsigned int packet_seq)
{
vector<T2_ITEM_STR>::iterator iter;
A_FIND_STR a_find;
a_find.type=0;
a_find.deviceID=deviceID;
a_find.seq=packet_seq;
Message message;
if((iter=find(m_T2_ReTransmit_Queue_vector.begin(),m_T2_ReTransmit_Queue_vector.end(),a_find))!=m_T2_ReTransmit_Queue_vector.end())
{
message=iter->msg;
}
else
{
cout<<"the element is not found!"<<endl;
cout<<endl;
}
return message;
}
void SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_ReTransmit(vector<T2_ITEM_STR>::iterator iter_temp)
{
Addr_Str addr_str;
cout<<"retransmit:deviceID="<<iter_temp->deviceID<<endl;
cout<<"seq="<<iter_temp->RUDP_Seq<<endl;
SOCKET_ReTransmit_Timing2_Protocol_Handler::socket_sr_re_ptr->create_des_address("192.168.32.9",6666);
SOCKET_ReTransmit_Timing2_Protocol_Handler::socket_sr_re_ptr->app_rudp(iter_temp->rudp,iter_temp->packet_ptr, (iter_temp->msg).Length);
SOCKET_ReTransmit_Timing2_Protocol_Handler::socket_sr_re_ptr->send();
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_delete_all_t2_item_struct_by_deviceID(int deviceID)
{
return 0;
}
int SOCKET_ReTransmit_Timing2_Protocol_Handler::get_vector_length()
{
return m_T2_ReTransmit_Queue_vector.size();
}
void f_SOCKET_Timing2_Scan()
{
cout<<"timer"<<endl;
current_num=(current_num+1)%5;
vector<T2_ITEM_STR>::iterator iter;
int i;
int j;
int n=0;
T2_ITEM_STR t2_item_str;
for(i=0;i<SOCKET_ReTransmit_Timing2_Protocol_Handler::t2_vector_length-n;i++)
{
iter=SOCKET_ReTransmit_Timing2_Protocol_Handler::m_T2_ReTransmit_Queue_vector.begin();
// for(j=0;j<n;j++)
// iter++;
if((iter->T-current_num)==0)
{
if(iter->N!=0)
{
SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_ReTransmit(iter);
cout<<"重发"<<endl;
t2_item_str.deviceID=iter->deviceID;
t2_item_str.msg=iter->msg;
t2_item_str.N=iter->N-1;
t2_item_str.packet_ptr=iter->packet_ptr;
t2_item_str.T=iter->T;
t2_item_str.rudp=iter->rudp;
t2_item_str.RUDP_Seq=iter->RUDP_Seq;
t2_item_str.addr_str=iter->addr_str;
SOCKET_ReTransmit_Timing2_Protocol_Handler::m_T2_ReTransmit_Queue_vector.erase(iter);
SOCKET_ReTransmit_Timing2_Protocol_Handler::m_T2_ReTransmit_Queue_vector.push_back(t2_item_str);
// n++;
}
else
{
SOCKET_ReTransmit_Timing2_Protocol_Handler::f_SOCKET_Timing2_TimeNumOut(iter);
}
}
else
break;
}
}
bool SOCKET_ReTransmit_Timing2_Protocol_Handler::is_empty()
{
return t2_vector_length<1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -