📄 socket_protocol_layer.cpp
字号:
// SOCKET_Protocol_Layer.cpp: implementation of the SOCKET_Protocol_Layer class.
//
//////////////////////////////////////////////////////////////////////
#include "SOCKET_Protocol_Layer.h"
bool f_SOCKET_Message_Transmit_Queue_Listneing_Handler(Message *msg)
{
if(msg->Device==DEVICE_TRANSMIT)
{
return socket_transmit_protocol_handler_ptr->f_SOCKET_Transmit_Protocol_Handler(msg);
}
else
{
return control_protocol_handler_ptr->f_SOCKET_Control_Message_Analyse_Handler(msg);
}
}
void init()
{
socket_transmit_protocol_handler_ptr=SOCKET_Transmit_Protocol_Handler::get_instance();
activity_list_manager_ptr=SOCKET_ACTIVITY_LIST_Handler::get_instance();
seq_manager_ptr=SOCKET_Sequence_Manager::get_instance();
socket_sr_ptr=Socket_SR::get_instance();
receive_data_buff=SOCKET_Receive_Data_Buff::get_instance();
receive_protocol_handler_ptr=SOCKET_Receive_Protocol_Handler::get_instance();
control_protocol_handler_ptr=SOCKET_Control_Protocol_Handler::get_instance();
if( pthread_mutex_init( &retransmit_queue_lock,NULL) != 0)
printf("can't get mutex_lock\n");
else
printf("succeed init mutex_lock\n");
}
void* send_thread(void* arg)
{
}
void* receive_thread(void* arg)
{
Data_Queue_STR* data_queue_str_ptr;
int n=0;
while(1)
{
if(data_queue_str_ptr=receive_data_buff->get_Data_Buff_item())
{
RUDP* rudp;
rudp=(RUDP*)data_queue_str_ptr->rudp_data;
cout<<"处理第:"<<n<<"个包"<<"包类型:"<<rudp->packet_type<<"包序列号:"<<rudp->packet_seq<<endl;
n++;
receive_protocol_handler_ptr->f_SOCKET_Receive_Analyse_Protocol_Handler(data_queue_str_ptr);
}
}
}
void* port_listen_thread(void* arg)
{
printf("监听端口:\n");
int paket_len;
char* paket_ptr;
RUDP *rudp;
while(1)
{
paket_len=socket_sr_ptr->receive();
paket_ptr=socket_sr_ptr->get_recvBuf();
rudp=(RUDP*)paket_ptr;
receive_data_buff->add(paket_ptr, paket_len);
}
}
int main(void)
{
init();
pthread_t send_threadID,receive_threadID,port_listen_threadID;
int ret;
ret=pthread_create(&send_threadID,NULL,send_thread,NULL);
if(ret!=0)
{
printf ("Create pthread error!n");
exit(1);
}
ret=pthread_create(&receive_threadID,NULL,receive_thread,NULL);
if(ret!=0)
{
printf ("Create pthread error!n");
exit(1);
}
ret=pthread_create(&port_listen_threadID,NULL,port_listen_thread,NULL);
if(ret!=0)
{
printf ("Create pthread error!n");
exit(1);
}
pthread_join(send_threadID,NULL);
pthread_join(receive_threadID,NULL);
pthread_join(port_listen_threadID,NULL);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -