收发传真包的消息交互

int MsgInterface::SendFax(char* phone)
{   
    Req_Fax t_req;
    memset(&t_req,0,sizeof(Req_Fax));
    strcpy(t_req.callerfaxphone,m_faxphone);
    strcpy(t_req.calledfaxphone,phone);
   
    t_req.faxMedia.data_redundancy = arg.data_redundancy;
    t_req.faxMedia.numFEC = arg.numFEC;
    t_req.faxMedia.numIFPs = arg.numIFPs;
    t_req.faxMedia.t30_redundancy = arg.t30_redundancy;
    t_req.faxMedia.t38FaxMaxDatagram = arg.t38FaxMaxDatagram;
     
    t_req.faxMedia.t38FaxRateManagement = t38FaxRateManagement;
    
    t_req.faxMedia.T38FaxUdpEC = t38FaxUdpEC;
    t_req.faxMedia.t38FillBitRemoval = arg.t38FillBitRemoval;

    GetLocalHost(t_req.faxMedia.ip);
    t_packet.port = GetFaxPort();    
    t_req.faxMedia.port = t_packet.port;
    Getfaxid(t_req.faxid);
     
    int comID = REQ_CALL_FAX;
    int seqID = m_tcpMsgProcess->getSeqID();
    MsgInfo t_info;
    memset(&t_info,0,sizeof(MsgInfo));
    t_info.comID = comID;
    t_info.len = sizeof(Req_Fax);
    memcpy(t_info.data,&t_req,sizeof(Req_Fax));
    GetClientNameID(LEFT_HANDLE,t_info.clientID);
    
    SendMsg(seqID,t_info);
    
    return 0;
}
int MsgInterface::SendMsg(int seqID,MsgInfo msginfo)
{
	MsgPack msg_pack_t;
	memset(&msg_pack_t,0,sizeof(msg_pack_t));
	msg_pack_t.std_head.seqID = seqID;
	msg_pack_t.std_head.comID = msginfo.comID;
	msg_pack_t.std_head.bodyLen = msginfo.len;
	strcpy(msg_pack_t.std_head.clientID,msginfo.clientID);
	 
	memcpy(msg_pack_t.data,msginfo.data,msginfo.len);
	m_tcpMsgProcess->PutData(msg_pack_t);
	  
}

接收方

int MsgRecvInterface::ReqCallFax(char* data, int len, int seqID,int comID)
{	 
	Req_Fax* t_req = (Req_Fax*)data;
	  
	m_msgInterface->RecvFax(t_req->callerfaxphone,t_req->faxid);
	return 0;
}

int MsgInterface::RecvFax(char* phone,char* faxid)
{
	 
	Req_Fax t_req;
	memset(&t_req,0,sizeof(Req_Fax));
	strcpy(t_req.callerfaxphone,t_packet.phone);
	strcpy(t_req.calledfaxphone,t_packet.calledphone);

	strcpy(t_req.faxid,t_packet.faxID);
	strcpy(t_req.tagid,t_packet.tagID);
	 
	memcpy(&t_req.faxMedia,&t_packet.faxmedia,sizeof(FaxMedia));
 	 
	strcpy(t_req.faxMedia.ip,ip);
	t_req.faxMedia.port = GetFaxPort();
	arg.isCaller = false;
	t_packet.port = t_req.faxMedia.port;
	 
	int comID = RSQ_CALL_FAX;
	int seqID = m_tcpMsgProcess->getSeqID();
	MsgInfo t_info;
	memset(&t_info,0,sizeof(MsgInfo));
	t_info.comID = comID;
	t_info.len = sizeof(Req_Fax);
	memcpy(&t_info.data,&t_req,t_info.len);
	GetClientNameID(LEFT_HANDLE,t_info.clientID);
	SendMsg(seqID,t_info);
	 
	ret = t_packet.faxprol->StartFax(arg,NULL,recvfile);
	 
}
传真发起方

int MsgRecvInterface::RsqCallFax(char* data, int len, int seqID,int comID)
{
	       char fileName[100];
    memset(fileName,0,sizeof(fileName));
    m_msgInterface->GetFilePathName(fileName);
	 
	ret = t_packet.faxprol->StartFax(arg,fileName,NULL);
	 
}


int FaxControlProcess::FaxConSend()
{    
    struct udptl_io io;     
    fd_set rdList;    
    io.send = terminal_send;
    udptl_register(t->t38_fe.t38->hudptl, &io, (void*)fd); 
    while(1){     
        ret = select(fd+1, &rdList, NULL, NULL, &selTv);        
        if(ret > 0 && FD_ISSET(fd, &rdList))
        {
            len = recv(fd, (char *)buf, sizeof(buf), 0); 
            udptl_recv_proc(t->t38_fe.t38->hudptl,buf, len);               
        }        
        terminal_send_timeout(t, tvdiff_us(now, last) * 8 / 1000);        
    }   
    udptl_unregister(t->t38_fe.t38->hudptl);  
    return 0;
}
传真接收方
int FaxControlProcess::FaxConRecv()
{	 
	struct udptl_io io;	 
	fd_set rdList;	  
	io.send = terminal_send;
	udptl_register(t->t38_fe.t38->hudptl, &io, (void*)fd); 
	while(1){	 
		ret = select(fd+1, &rdList, NULL, NULL, &selTv);		 
		if(ret > 0 && FD_ISSET(fd, &rdList))
		{
			len = recv(fd, (char *)buf, sizeof(buf), 0);			 
			udptl_recv_proc(t->t38_fe.t38->hudptl, buf, len);			 
		} 		 
		terminal_send_timeout(t, tvdiff_us(now, last) * 8 / 1000);		 
	}	 
	udptl_unregister(t->t38_fe.t38->hudptl);	 
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值