⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 .#messageprocessor.java.1.18

📁 It is Java for SIP phone
💻 18
📖 第 1 页 / 共 3 页
字号:
				  call.getDialog().getDialogId());				callManager.removeIMCall(imCall);			}        }        catch (SipException se) {                                    se.printStackTrace();                    }        catch (ParseException pe) {                                    pe.printStackTrace();                    }            }    /**     * Process the ACK received request     * @param serverTransaction - the server transaction associated with the request     * @param ack - the ack request      */    public void processAck(ServerTransaction serverTransaction, Request ack)    {		CallManager callManager=messageListener.sipMeetingManager.getCallManager();		//Strip out the callee		SipURI calleeURI=			(SipURI)((FromHeader)ack.getHeader(FromHeader.NAME))				.getAddress().getURI();		String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost();		//Find the Audio call		AudioCall call=callManager.findAudioCall(callee);		if(call!=null){			if(!call.getVoiceMessaging())				call.getMediaManager().startMediaSession(false);			else				startVoiceMessagingSchedule(callee);			call.setStatus(AudioCall.IN_A_CALL);	        					messageListener.sipMeetingManager.notifyObserversNewCallStatus(call);					}    	    }    /**     * Process the CANCEL received request     * @param serverTransaction - the server transaction associated with the request     * @param cancel - the cancel request      */    public void processCancel(ServerTransaction serverTransaction,                       Request cancel)    {		CallManager callManager=messageListener.sipMeetingManager.getCallManager();		//Strip out the callee		SipURI calleeURI=			(SipURI)((FromHeader)cancel.getHeader(FromHeader.NAME))				.getAddress().getURI();		String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost().trim().toLowerCase();				//Find the Audio call		AudioCall call=callManager.findAudioCall(callee);        //Send OK        try {        	        	            Response ok = (Response) MessageListener.messageFactory.createResponse(                    Response.OK,cancel);				serverTransaction.sendResponse(ok);			call.setStatus(AudioCall.CANCEL);	        					messageListener.sipMeetingManager.notifyObserversNewCallStatus(call);			System.out.println("Audio Call removed : "+				call.getDialog().getDialogId());			callManager.removeAudioCall(call);                    }        catch (SipException se) {                                    se.printStackTrace();                    }        catch (ParseException pe) {                                    pe.printStackTrace();                    }            }	/**	 * Process the MESSAGE received request	 * @param serverTransaction - the server transaction associated with the request	 * @param message - the request 	 */	public void processMessage(ServerTransaction serverTransaction, Request message)	{				//Send OK		try {			String sender=null;			Address address=((FromHeader)message.getHeader(FromHeader.NAME)).getAddress();			if(address.getURI().isSipURI()){				SipURI sipURI=((SipURI)address.getURI());				String host=sipURI.getHost();				String user=sipURI.getUser();				sender=user+"@"+host;			}			//Getting the sdp body for creating the response		  	//This sdp body will present what codec has been chosen		  	//and on which port every media will be received		  	ContentTypeHeader contentTypeHeader=				(ContentTypeHeader)message.getHeader(ContentTypeHeader.NAME);			if (contentTypeHeader == null || contentTypeHeader.getContentType() == null || 			  contentTypeHeader.getContentSubType() == null ) return;		  	String subType=contentTypeHeader.getContentSubType();		  	//If we have a voice messaging plays it		  	if ( contentTypeHeader.getContentType().equals("audio") ) {				if ( contentTypeHeader.getContentSubType().equals("x-gsm") ||					contentTypeHeader.getContentSubType().equals("gsm") ){					Response ok = (Response) MessageListener.messageFactory.createResponse(						Response.OK,message);					ToHeader toHeader=(ToHeader)message.getHeader(ToHeader.NAME);					if (toHeader.getTag()==null)						toHeader.setTag(new Integer((int)(Math.random() * 10000)).toString());					serverTransaction.sendResponse(ok);							byte[] voiceMessage=message.getRawContent();										//if(!voicePlayer.isInitialized())						voicePlayer.initialize(voiceMessage);					/*else											voicePlayer.setData(voiceMessage);*/											voicePlayer.play();							message.removeContent();		  		} else {					System.out.println("Cannot handle this codec " + contentTypeHeader.getContentSubType());				}			} else if (contentTypeHeader.getContentType().equals("text") 	  				&& contentTypeHeader.getContentSubType().equals("plain")) {				Response ok = (Response) MessageListener.messageFactory.createResponse(					Response.OK,message);				ToHeader toHeader=(ToHeader)message.getHeader(ToHeader.NAME);				if (toHeader.getTag()==null)					toHeader.setTag(new Integer((int)(Math.random() * 10000)).toString());				serverTransaction.sendResponse(ok);						String content = new String(message.getRawContent());				FromHeader fromHeader = (FromHeader) message.getHeader(FromHeader.NAME);				messageListener.sipMeetingManager.notifyObserversIMReceived(content,sender);			} else {				// send a Not Acceptable here message.				Response notok = (Response) MessageListener.messageFactory.createResponse(					Response.NOT_ACCEPTABLE,message);				ToHeader toHeader=(ToHeader)message.getHeader(ToHeader.NAME);				serverTransaction.sendResponse(notok);						System.out.println("Cannot handle this content Type " + contentTypeHeader);			}			message.removeContent();		}		catch (SipException se) {                        			se.printStackTrace();            		}		catch (ParseException pe) {                        			pe.printStackTrace();            		}	}			/**	 * Process the SUBSCRIBE received request	 * @param serverTransaction - the server transaction associated with the request	 * @param subscribe - the request 	 */	public void processSubscribe(ServerTransaction serverTransaction, Request subscribe)	{		Address address=((FromHeader)subscribe.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(serverTransaction.getDialog());		messageListener.sipMeetingManager.notifySubscribe(subscriber);					}		/**	 * Process the NOTIFY received request	 * @param serverTransaction - the server transaction associated with the request	 * @param notify - the request 	 */	public void processNotify(ServerTransaction serverTransaction, Request notify)	{		//Send OK		try {			Response ok = (Response) MessageListener.messageFactory.createResponse(					Response.OK,notify);			ToHeader toHeader=(ToHeader)notify.getHeader(ToHeader.NAME);			if (toHeader.getTag()==null)				toHeader.setTag(new Integer((int)(Math.random() * 10000)).toString());			serverTransaction.sendResponse(ok);								Address address=((FromHeader)notify.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;			}									ContentTypeHeader contentTypeHeader=(ContentTypeHeader)									notify.getHeader(ContentTypeHeader.NAME);			if(contentTypeHeader!=null){													String xmlType=contentTypeHeader.getContentSubType(); 						if (xmlType.equals("xpidf+xml") ) {					String pidfContent=new String(notify.getRawContent());					int endDocIndex=pidfContent.indexOf("<presence>");					pidfContent=pidfContent.substring(endDocIndex);					XMLpidfParser pidfParser=new XMLpidfParser();					pidfParser.parsePidfString(pidfContent);					PresenceTag presenceTag=pidfParser.getPresenceTag();								presenceTag.setAddress(sender);					messageListener.sipMeetingManager.notifyPresence(presenceTag);				}				}		}		catch (SipException se) {                        			se.printStackTrace();            		}		catch (ParseException pe) {                        			pe.printStackTrace();            		}	}		/**	 * After a	 * @param clientTransaction	 * @param response	 */	public void processRequestTerminated(					ClientTransaction clientTransaction,				        Response response){										}		    /**********************************************************************/    /*                                                                    */    /*                    Handling response messages                      */    /*                                                                    */    /**********************************************************************/            /**     * Process the Not found received response     * @param clientTransaction - the client transaction associated with the response     * @param notFound - the not found response     */    public void processNotFound(ClientTransaction clientTransaction, Response notFound)    {         }    /**     * Process the Not Implemented received response     * @param clientTransaction - the client transaction associated with the response     * @param notImplemented - the not found response     */    public void processNotImplemented(ClientTransaction clientTransaction,                               Response notImplemented)    {    }            /**     * Process the Trying received response     * @param clientTransaction - the client transaction associated with the response     * @param trying - the trying response     */    public void processTrying(ClientTransaction clientTransaction, Response trying)    {		CallManager callManager=messageListener.sipMeetingManager.getCallManager();		//Strip out the callee		SipURI calleeURI=			(SipURI)((ToHeader)trying.getHeader(ToHeader.NAME))				.getAddress().getURI();		String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost();				//Find the Audio call		AudioCall call=callManager.findAudioCall(callee);		if(call!=null){					call.setStatus(AudioCall.TRYING);	        					messageListener.sipMeetingManager.notifyObserversNewCallStatus(call);		}                }        /**     * Process the Ringing received response     * @param clientTransaction - the client transaction associated with the response     * @param ringing - the ringing response     */    public void processRinging(ClientTransaction clientTransaction, Response ringing)    {		CallManager callManager=messageListener.sipMeetingManager.getCallManager();		//Strip out the callee		SipURI calleeURI=			(SipURI)((ToHeader)ringing.getHeader(ToHeader.NAME))				.getAddress().getURI();		String callee="sip:"+calleeURI.getUser()+"@"+calleeURI.getHost();		//Find the Audio call		AudioCall call=callManager.findAudioCall(callee);		call.setStatus(AudioCall.RINGING);	        				messageListener.sipMeetingManager.notifyObserversNewCallStatus(call);            }        /**     * Process the OK received response for a REGISTER      * @param clientTransaction - the client transaction associated with the response     * @param registerOK - the OK received response for a REGISTER      */    public void processRegisterOK(ClientTransaction clientTransaction, Response registerOK)    {                         FromHeader fromHeader =            ( (FromHeader) registerOK.getHeader(FromHeader.NAME));        Address address = fromHeader.getAddress();        ExpiresHeader expires = registerOK.getExpires();                if (expires != null && expires.getExpires() == 0) {	  if ( messageListener.sipMeetingManager.reRegisterFlag) 	    // This is an OK for a cleared registration.	    messageListener.sipMeetingManager.register();	  else            messageListener.sipMeetingManager.setRegisterStatus(RegisterStatus.NOT_REGISTERED);                } else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -