📄 h323pdu.cxx
字号:
return cap;}H245_OpenLogicalChannel & H323ControlPDU::BuildOpenLogicalChannel(unsigned forwardLogicalChannelNumber){ H245_OpenLogicalChannel & open = Build(H245_RequestMessage::e_openLogicalChannel); open.m_forwardLogicalChannelNumber = forwardLogicalChannelNumber; return open;}H245_RequestChannelClose & H323ControlPDU::BuildRequestChannelClose(unsigned channelNumber, unsigned reason){ H245_RequestChannelClose & rcc = Build(H245_RequestMessage::e_requestChannelClose); rcc.m_forwardLogicalChannelNumber = channelNumber; rcc.IncludeOptionalField(H245_RequestChannelClose::e_reason); rcc.m_reason.SetTag(reason); return rcc;}H245_CloseLogicalChannel & H323ControlPDU::BuildCloseLogicalChannel(unsigned channelNumber){ H245_CloseLogicalChannel & clc = Build(H245_RequestMessage::e_closeLogicalChannel); clc.m_forwardLogicalChannelNumber = channelNumber; clc.m_source.SetTag(H245_CloseLogicalChannel_source::e_lcse); return clc;}H245_OpenLogicalChannelAck & H323ControlPDU::BuildOpenLogicalChannelAck(unsigned channelNumber){ H245_OpenLogicalChannelAck & ack = Build(H245_ResponseMessage::e_openLogicalChannelAck); ack.m_forwardLogicalChannelNumber = channelNumber; return ack;}H245_OpenLogicalChannelReject & H323ControlPDU::BuildOpenLogicalChannelReject(unsigned channelNumber, unsigned cause){ H245_OpenLogicalChannelReject & reject = Build(H245_ResponseMessage::e_openLogicalChannelReject); reject.m_forwardLogicalChannelNumber = channelNumber; reject.m_cause.SetTag(cause); return reject;}H245_OpenLogicalChannelConfirm & H323ControlPDU::BuildOpenLogicalChannelConfirm(unsigned channelNumber){ H245_OpenLogicalChannelConfirm & chan = Build(H245_IndicationMessage::e_openLogicalChannelConfirm); chan.m_forwardLogicalChannelNumber = channelNumber; return chan;}H245_CloseLogicalChannelAck & H323ControlPDU::BuildCloseLogicalChannelAck(unsigned channelNumber){ H245_CloseLogicalChannelAck & chan = Build(H245_ResponseMessage::e_closeLogicalChannelAck); chan.m_forwardLogicalChannelNumber = channelNumber; return chan;}H245_RequestChannelCloseAck & H323ControlPDU::BuildRequestChannelCloseAck(unsigned channelNumber){ H245_RequestChannelCloseAck & rcca = Build(H245_ResponseMessage::e_requestChannelCloseAck); rcca.m_forwardLogicalChannelNumber = channelNumber; return rcca;}H245_RequestChannelCloseReject & H323ControlPDU::BuildRequestChannelCloseReject(unsigned channelNumber){ H245_RequestChannelCloseReject & rccr = Build(H245_ResponseMessage::e_requestChannelCloseReject); rccr.m_forwardLogicalChannelNumber = channelNumber; return rccr;}H245_RequestChannelCloseRelease & H323ControlPDU::BuildRequestChannelCloseRelease(unsigned channelNumber){ H245_RequestChannelCloseRelease & rccr = Build(H245_IndicationMessage::e_requestChannelCloseRelease); rccr.m_forwardLogicalChannelNumber = channelNumber; return rccr;}H245_RequestMode & H323ControlPDU::BuildRequestMode(unsigned sequenceNumber){ H245_RequestMode & rm = Build(H245_RequestMessage::e_requestMode); rm.m_sequenceNumber = sequenceNumber; return rm;}H245_RequestModeAck & H323ControlPDU::BuildRequestModeAck(unsigned sequenceNumber, unsigned response){ H245_RequestModeAck & ack = Build(H245_ResponseMessage::e_requestModeAck); ack.m_sequenceNumber = sequenceNumber; ack.m_response.SetTag(response); return ack;}H245_RequestModeReject & H323ControlPDU::BuildRequestModeReject(unsigned sequenceNumber, unsigned cause){ H245_RequestModeReject & reject = Build(H245_ResponseMessage::e_requestModeReject); reject.m_sequenceNumber = sequenceNumber; reject.m_cause.SetTag(cause); return reject;}H245_RoundTripDelayRequest & H323ControlPDU::BuildRoundTripDelayRequest(unsigned sequenceNumber){ H245_RoundTripDelayRequest & req = Build(H245_RequestMessage::e_roundTripDelayRequest); req.m_sequenceNumber = sequenceNumber; return req;}H245_RoundTripDelayResponse & H323ControlPDU::BuildRoundTripDelayResponse(unsigned sequenceNumber){ H245_RoundTripDelayResponse & resp = Build(H245_ResponseMessage::e_roundTripDelayResponse); resp.m_sequenceNumber = sequenceNumber; return resp;}H245_UserInputIndication & H323ControlPDU::BuildUserInputIndication(const PString & value){ H245_UserInputIndication & ind = Build(H245_IndicationMessage::e_userInput); ind.SetTag(H245_UserInputIndication::e_alphanumeric); (PASN_GeneralString &)ind = value; return ind;}H245_UserInputIndication & H323ControlPDU::BuildUserInputIndication(char tone, unsigned duration, unsigned logicalChannel, unsigned rtpTimestamp){ H245_UserInputIndication & ind = Build(H245_IndicationMessage::e_userInput); ind.SetTag(H245_UserInputIndication::e_signal); H245_UserInputIndication_signal & sig = ind; sig.m_signalType.SetValue(tone); if (duration > 0) { sig.IncludeOptionalField(H245_UserInputIndication_signal::e_duration); sig.m_duration = duration; } if (logicalChannel > 0) { sig.IncludeOptionalField(H245_UserInputIndication_signal::e_rtp); sig.m_rtp.m_logicalChannelNumber = logicalChannel; sig.m_rtp.m_timestamp = rtpTimestamp; } return ind;}H245_FunctionNotUnderstood & H323ControlPDU::BuildFunctionNotUnderstood(const H323ControlPDU & pdu){ H245_FunctionNotUnderstood & fnu = Build(H245_IndicationMessage::e_functionNotUnderstood); switch (pdu.GetTag()) { case H245_MultimediaSystemControlMessage::e_request : fnu.SetTag(H245_FunctionNotUnderstood::e_request); (H245_RequestMessage &)fnu = (const H245_RequestMessage &)pdu; break; case H245_MultimediaSystemControlMessage::e_response : fnu.SetTag(H245_FunctionNotUnderstood::e_response); (H245_ResponseMessage &)fnu = (const H245_ResponseMessage &)pdu; break; case H245_MultimediaSystemControlMessage::e_command : fnu.SetTag(H245_FunctionNotUnderstood::e_command); (H245_CommandMessage &)fnu = (const H245_CommandMessage &)pdu; break; } return fnu;}H245_EndSessionCommand & H323ControlPDU::BuildEndSessionCommand(unsigned reason){ H245_EndSessionCommand & end = Build(H245_CommandMessage::e_endSessionCommand); end.SetTag(reason); return end;}/////////////////////////////////////////////////////////////////////////////PString H323GetAliasAddressString(const H225_AliasAddress & alias){ switch (alias.GetTag()) { case H225_AliasAddress::e_e164 : case H225_AliasAddress::e_url_ID : case H225_AliasAddress::e_email_ID : return (const PASN_IA5String &)alias; case H225_AliasAddress::e_h323_ID : return (const PASN_BMPString &)alias; case H225_AliasAddress::e_transportID : return H323TransportAddress(alias); case H225_AliasAddress::e_partyNumber : { const H225_PartyNumber & party = alias; switch (party.GetTag()) { case H225_PartyNumber::e_publicNumber : { const H225_PublicPartyNumber & number = party; return "PublicParty:" + (PString)number.m_publicNumberDigits; } case H225_PartyNumber::e_privateNumber : { const H225_PrivatePartyNumber & number = party; return "PrivateParty:" + (PString)number.m_privateNumberDigits; } case H225_PartyNumber::e_dataPartyNumber : case H225_PartyNumber::e_telexPartyNumber : case H225_PartyNumber::e_nationalStandardPartyNumber : return (const H225_NumberDigits &)party; } break; } default : break; } return PString();}/////////////////////////////////////////////////////////////////////////////H225_GatekeeperRequest & H323RasPDU::BuildGatekeeperRequest(unsigned seqNum){ SetTag(e_gatekeeperRequest); H225_GatekeeperRequest & grq = *this; grq.m_requestSeqNum = seqNum; grq.m_protocolIdentifier.SetValue(H225_ProtocolID); return grq;}H225_RegistrationRequest & H323RasPDU::BuildRegistrationRequest(unsigned seqNum){ SetTag(e_registrationRequest); H225_RegistrationRequest & rrq = *this; rrq.m_requestSeqNum = seqNum; rrq.m_protocolIdentifier.SetValue(H225_ProtocolID); return rrq;}H225_UnregistrationRequest & H323RasPDU::BuildUnregistrationRequest(unsigned seqNum){ SetTag(e_unregistrationRequest); H225_UnregistrationRequest & urq = *this; urq.m_requestSeqNum = seqNum; return urq;}H225_UnregistrationConfirm & H323RasPDU::BuildUnregistrationConfirm(unsigned seqNum){ SetTag(e_unregistrationConfirm); H225_UnregistrationConfirm & ucf = *this; ucf.m_requestSeqNum = seqNum; return ucf;}H225_LocationRequest & H323RasPDU::BuildLocationRequest(unsigned seqNum){ SetTag(e_locationRequest); H225_LocationRequest & lrq = *this; lrq.m_requestSeqNum = seqNum; return lrq;}H225_AdmissionRequest & H323RasPDU::BuildAdmissionRequest(unsigned seqNum){ SetTag(e_admissionRequest); H225_AdmissionRequest & arq = *this; arq.m_requestSeqNum = seqNum; return arq;}H225_DisengageRequest & H323RasPDU::BuildDisengageRequest(unsigned seqNum){ SetTag(e_disengageRequest); H225_DisengageRequest & drq = *this; drq.m_requestSeqNum = seqNum; return drq;}H225_DisengageConfirm & H323RasPDU::BuildDisengageConfirm(unsigned seqNum){ SetTag(e_disengageConfirm); H225_DisengageConfirm & dcf = *this; dcf.m_requestSeqNum = seqNum; return dcf;}H225_BandwidthRequest & H323RasPDU::BuildBandwidthRequest(unsigned seqNum){ SetTag(e_bandwidthRequest); H225_BandwidthRequest & brq = *this; brq.m_requestSeqNum = seqNum; return brq;}H225_BandwidthConfirm & H323RasPDU::BuildBandwidthConfirm(unsigned seqNum, unsigned bandWidth){ SetTag(e_bandwidthConfirm); H225_BandwidthConfirm & bcf = *this; bcf.m_requestSeqNum = seqNum; bcf.m_bandWidth = bandWidth; return bcf;}H225_BandwidthReject & H323RasPDU::BuildBandwidthReject(unsigned seqNum, unsigned reason){ SetTag(e_bandwidthReject); H225_BandwidthReject & brj = *this; brj.m_requestSeqNum = seqNum; brj.m_rejectReason.SetTag(reason); return brj;}H225_InfoRequestResponse & H323RasPDU::BuildInfoRequestResponse(unsigned seqNum){ SetTag(e_infoRequestResponse); H225_InfoRequestResponse & irr = *this; irr.m_requestSeqNum = seqNum; return irr;}H225_UnknownMessageResponse & H323RasPDU::BuildUnknownMessageResponse(unsigned seqNum){ SetTag(e_unknownMessageResponse); H225_UnknownMessageResponse & umr = *this; umr.m_requestSeqNum = seqNum; return umr;}BOOL H323RasPDU::Read(H323Transport & transport){ PPER_Stream strm; if (!transport.ReadPDU(strm)) { PTRACE(1, "H225RAS\tRead error: " << transport.GetErrorText()); return FALSE; } BOOL ok = Decode(strm); if (!ok) { PTRACE(1, "H225RAS\tRead error: PER decode failure"); }#if PTRACING if (PTrace::CanTrace(4)) PTRACE(4, "H225RAS\tReceived PDU:\n " << setprecision(2) << strm << "\n " << setprecision(2) << *this); else PTRACE(3, "H225RAS\tReceived PDU: " << GetTagName());#endif return ok;}BOOL H323RasPDU::Write(H323Transport & transport) const{ PPER_Stream strm; Encode(strm); strm.CompleteEncoding();#if PTRACING if (PTrace::CanTrace(4)) PTRACE(4, "H225RAS\tSending PDU:\n " << setprecision(2) << *this << "\n " << setprecision(2) << strm); else PTRACE(3, "H225\tSending PDU: " << GetTagName());#endif return transport.WritePDU(strm);}/////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -