📄 .#messageprocessor.java.1.18
字号:
messageListener.sipMeetingManager.setRegisterStatus(RegisterStatus.REGISTERED); } } /** * Process the OK received response for a BYE * @param clientTransaction - the client transaction associated with the response * @param byeOK - the OK received response for a BYE */ public void processByeOK(ClientTransaction clientTransaction, Response byeOK) { CallManager callManager=messageListener.sipMeetingManager.getCallManager(); //Find the Audio call Call call= callManager.findCall(clientTransaction.getDialog().getDialogId()); if(call instanceof AudioCall){ AudioCall audioCall=(AudioCall)call; audioCall.setStatus(AudioCall.NOT_IN_A_CALL); messageListener.sipMeetingManager.notifyObserversNewCallStatus(audioCall); /*if(audioCall.getVoiceMessaging()){ stopVoiceMessagingSchedule(); } else{ audioCall.getMediaManager().stopMediaSession(); }*/ System.out.println("Audio Call removed : "+ call.getDialog().getDialogId()); //Remove the call callManager.removeAudioCall(audioCall); } else{ IMCall imCall=(IMCall)call; //Remove the call System.out.println("IM Call removed : "+ call.getDialog().getDialogId()); callManager.removeIMCall(imCall); } } /** * Process the OK received response for a CANCEL * @param clientTransaction - the client transaction associated with the response * @param cancelOK - the OK received response for a CANCEL */ public void processCancelOK(ClientTransaction clientTransaction, Response cancelOK) { CallManager callManager=messageListener.sipMeetingManager.getCallManager(); //Strip out the callee SipURI calleeURI= (SipURI)((ToHeader)cancelOK.getHeader(ToHeader.NAME)) .getAddress().getURI(); String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost().trim().toLowerCase(); //Find the Audio call AudioCall call=callManager.findAudioCall(callee); call.setStatus(AudioCall.NOT_IN_A_CALL); messageListener.sipMeetingManager.notifyObserversNewCallStatus(call); callManager.removeAudioCall(call); } /** * Process the OK received response for a MESSAGE * @param clientTransaction - the client transaction associated with the response * @param cancelOK - the OK received response for a MESSAGE */ public void processMessageOK(ClientTransaction clientTransaction, Response messageOK) { } /** * Process the OK received response for a SUBSCRIBE * @param clientTransaction - the client transaction associated with the response * @param cancelOK - the OK received response for a MESSAGE */ public void processSubscribeOK(ClientTransaction clientTransaction, Response subscribeOK) { messageListener.sipMeetingManager.presenceAllowed=true; Address address=((FromHeader)subscribeOK.getHeader(FromHeader.NAME)).getAddress(); String sender=null; if(address.getURI().isSipURI()){ SipURI sipURI=((SipURI)address.getURI()); String host=sipURI.getHost(); String user=sipURI.getUser(); sender=user+"@"+host; } /*Subscriber subscriber = new Subscriber(sender); subscriber.setDialog(clientTransaction.getDialog()); messageListener.sipMeetingManager.getPresentityManager(). sendNotifyToSubscriber( subscriber, "open", "online");*/ } /** * Process the OK received response for a SUBSCRIBE * @param clientTransaction - the client transaction associated with the response * @param cancelOK - the OK received response for a MESSAGE */ public void processSubscribeAccepted(ClientTransaction clientTransaction, Response subscribeAccepted) { messageListener.sipMeetingManager.presenceAllowed=true; /*Address address=((FromHeader)subscribeOK.getHeader(FromHeader.NAME)).getAddress(); String sender=null; if(address.getURI().isSipURI()){ SipURI sipURI=((SipURI)address.getURI()); String host=sipURI.getHost(); String user=sipURI.getUser(); sender=user+"@"+host; }*/ /*Subscriber subscriber = new Subscriber(sender); subscriber.setDialog(clientTransaction.getDialog()); messageListener.sipMeetingManager.getPresentityManager(). sendNotifyToSubscriber( subscriber, "open", "online");*/ } /** * Process the OK received response for a INVITE * @param clientTransaction - the client transaction associated with the response * @param inviteOK - the OK received response for a INVITE */ public void processInviteOK(ClientTransaction clientTransaction, Response inviteOK) { CallManager callManager=messageListener.sipMeetingManager.getCallManager(); //Strip out the callee SipURI calleeURI= (SipURI)((ToHeader)inviteOK.getHeader(ToHeader.NAME)) .getAddress().getURI(); String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost(); //Find the Audio call AudioCall call=callManager.findAudioCall(callee); //Send ACK try { Request ack = (Request) clientTransaction.getDialog(). createRequest(Request.ACK); ack.setRequestURI(calleeURI); System.out.println("Sending ACK : \n"+ack.toString()); try { clientTransaction.getDialog().sendAck(ack); } catch (SipException ex) { System.out.println("Could not send out the ACK request! "); ex.printStackTrace(); } //messageListener.sipProvider.sendRequest(ack); } catch (SipException ex) { ex.printStackTrace(); } ContentTypeHeader contentTypeHeader= (ContentTypeHeader)inviteOK.getHeader(ContentTypeHeader.NAME); // no content type header means other end does not support sdp. if (contentTypeHeader != null){ String type = contentTypeHeader.getContentType(); String subType=contentTypeHeader.getContentSubType(); //System.out.println("the other end answer us with "+subType); messageListener.sipMeetingManager.notifyObserversNewCallStatus(call); if(type.equals("application") && subType.equals("sdp")){ //Start the media session MediaManager mediaManager=call.getMediaManager(); mediaManager.prepareMediaSession(new String(inviteOK.getRawContent())); mediaManager.startMediaSession(true); } } else{ // else start the media messaging session. ListIterator it = inviteOK.getHeaders(AcceptHeader.NAME); while (it.hasNext()) { AcceptHeader next = (AcceptHeader)it.next(); if (next.getContentType().equals("audio") && ( next.getContentSubType().equals("gsm") || next.getContentSubType().equals("x-gsm") ) ) { call.setVoiceMesaging(true); //schedule to send the voice messages every 2 sec. startVoiceMessagingSchedule(callee); } else if (next.getContentType().equals("text") && next.getContentSubType().equals("plain") ) { // TODO -- textMessaging.setTextMessaging(true); } } } call.setStatus(AudioCall.IN_A_CALL); messageListener.sipMeetingManager.notifyObserversNewCallStatus(call); } /** * Process the Busy here response * @param clientTransaction - the client transaction associated with the response * @param busyhere - the Busy here response */ public void processBusyHere(ClientTransaction clientTransaction, Response busyHere) { CallManager callManager=messageListener.sipMeetingManager.getCallManager(); //Strip out the callee SipURI calleeURI= (SipURI)((ToHeader)busyHere.getHeader(ToHeader.NAME)) .getAddress().getURI(); String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost(); Call call=callManager.findCall(clientTransaction.getDialog().getDialogId()); if(call instanceof AudioCall){ call.setStatus(AudioCall.BUSY); messageListener.sipMeetingManager.notifyObserversNewCallStatus(call); System.out.println("Audio Call removed : "+ call.getDialog().getDialogId()); callManager.removeAudioCall((AudioCall)call); } } /** * Process the temporary Unavailable response * @param clientTransaction - the client transaction associated with the response * @param temporaryUnavailable - the temporary Unavailable response */ public void processTemporaryUnavailable(ClientTransaction clientTransaction, Response temporaryUnavailable) { CallManager callManager=messageListener.sipMeetingManager.getCallManager(); //Find the call Call call=callManager.findCall(clientTransaction.getDialog().getDialogId()); if(call instanceof AudioCall){ AudioCall audioCall=(AudioCall)call; audioCall.setStatus(Call.TEMPORARY_UNAVAILABLE); messageListener.sipMeetingManager.notifyObserversNewCallStatus(audioCall); System.out.println("Audio Call removed : "+ call.getDialog().getDialogId()); callManager.removeAudioCall(audioCall); } else if(call instanceof IMCall){ IMCall imCall=(IMCall)call; imCall.setStatus(Call.TEMPORARY_UNAVAILABLE); messageListener.sipMeetingManager.notifyObserversNewCallStatus(imCall); System.out.println("IM Call removed : "+ call.getDialog().getDialogId()); callManager.removeIMCall(imCall); } } /** * Process the 407 - Proxy Authentication Required * @param clientTransaction - the client transaction associated with the response * @param proxyAuthenticationRequired - the temporary Unavailable response */ public void processProxyAuthenticationRequired( ClientTransaction clientTransaction, Response proxyAuthenticationRequired){ messageListener.sipMeetingManager.setRegisterStatus( RegisterStatus.PROXY_AUTHENTICATION_REQUIRED); } /** * Process the 405 - Method Not Allowed * @param clientTransaction - the client transaction associated with the response * @param proxyAuthenticationRequired - the temporary Unavailable response */ public void processMethodNotAllowed( ClientTransaction clientTransaction, Response methodNotAllowed){ messageListener.sipMeetingManager.presenceAllowed=false; } /**********************************************************************/ /* */ /* Handling timeout messages */ /* */ /**********************************************************************/ /** * Process the timed out MESSAGE * @param message - the timedout request */ public void processTimedOutMessage(Request message) { ToHeader toHeader=(ToHeader)(message.getHeader(ToHeader.NAME)); Address address=toHeader.getAddress(); if(address.getURI().isSipURI()){ SipURI toURI=(SipURI)address.getURI(); messageListener.sipMeetingManager.notifyObserversIMReceived( new String(message.getRawContent())+" has not been delivered successfully", toURI.getUser()+"@"+toURI.getHost()); } } /** * Process the timed out REGISTER * @param message - the timedout request */ public void processTimedOutRegister(Request register) { messageListener.sipMeetingManager.setRegisterStatus( RegisterStatus.NOT_REGISTERED); } /** * Process the timed out REGISTER * @param message - the timedout request */ public void processTimedOutInvite(Request invite) { messageListener.sipMeetingManager.setRegisterStatus( AudioCall.NOT_IN_A_CALL); } /** * Process the Timeout received request * @param transaction - the transaction associated with the request * @param timeout - the timeout request */ public void processTimeout(Transaction transaction, Request timeout) { } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -