亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? messageprocessor.java

?? It is Java for SIP phone
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* * MessageProcessor.java * * Created on November 17, 2003, 5:52 PM */package gov.nist.applet.phone.ua;import java.text.ParseException;import javax.sip.SipException;import javax.sip.Transaction;import javax.sip.SipFactory;import javax.sip.ServerTransaction;import javax.sip.ClientTransaction;import javax.sip.message.Request;import javax.sip.message.Response;import javax.sip.message.MessageFactory;import javax.sip.address.AddressFactory;import javax.sip.address.Address;import javax.sip.address.SipURI;import javax.sip.address.URI;import javax.sip.header.AcceptHeader;import javax.sip.header.CallInfoHeader;import javax.sip.header.ContentTypeHeader;import javax.sip.header.HeaderFactory;import javax.sip.header.FromHeader;import javax.sip.header.ToHeader;import javax.sip.header.ExpiresHeader;import javax.sip.header.RouteHeader;import javax.sip.header.RecordRouteHeader;import javax.sip.header.ContactHeader;import java.util.ListIterator;import java.util.LinkedList;import java.util.Iterator;import gov.nist.applet.phone.media.MediaManager;import gov.nist.applet.phone.media.messaging.VoicePlayer;import gov.nist.applet.phone.media.messaging.VoiceRecorder;import gov.nist.applet.phone.ua.call.*;import gov.nist.applet.phone.ua.pidf.parser.PresenceTag;import gov.nist.applet.phone.ua.pidf.parser.XMLpidfParser;import gov.nist.applet.phone.ua.presence.*;/** * Handler of a major part of sip messages *  * @author  DERUELLE Jean */public class MessageProcessor {	/**	 * The SipFactory instance used to create the SipStack and the Address	 * Message and Header Factories.	 */	SipFactory sipFactory;	/**	 * The AddressFactory used to create URLs ans Address objects.	 */	AddressFactory addressFactory;	/**	 * The HeaderFactory used to create SIP message headers.	 */	HeaderFactory headerFactory;	/**	 * The Message Factory used to create SIP messages.	 */	MessageFactory messageFactory;	/**	 * The MessageListener used to handle incoming messages	 */	MessageListener messageListener;	/**	 * the configuration	 */	private Configuration configuration;	VoicePlayer voicePlayer = null;	/**	 * 	 */	MessengerManager messengerManager;	VoiceMessagingTask voiceMessagingTask;                CallManager callManager;		class VoiceMessagingTask implements Runnable {		Thread voiceMessagingThread = null;		String contactAddress = null;		protected static final String STARTED = "Started";		protected static final String STOPPED = "Stopped";		String state = STOPPED;		public VoiceMessagingTask(String contactAddress) {			this.contactAddress = contactAddress;		}		public synchronized void start() {			if (voiceMessagingThread == null) {				voiceMessagingThread = new Thread(this);			}			state = STARTED;			voiceMessagingThread.start();		}		public synchronized void stop() {			state = STOPPED;		}		public void run() {			while (state.equals(STARTED)) {				try {					byte[] buffer = VoiceRecorder.getInstance().getRecord();					if (buffer != null)						messengerManager.sendVoiceMessage(							contactAddress,							buffer);					voiceMessagingThread.sleep(						Configuration.latency4VoiceMessaging);				} catch (Exception ex) {					ex.printStackTrace();				}			}		}	}	/**	 * 	 */	protected void startVoiceMessagingSchedule(String callee) {		//schedule to send the voice messages every 2 sec.		VoiceRecorder.getInstance().initialize();		VoiceRecorder.getInstance().start();		voiceMessagingTask = new VoiceMessagingTask(callee);		voiceMessagingTask.start();	}	/**	 * 	 */	protected void stopVoiceMessagingSchedule() {		//Stop the voice messages schedule and the voiceRecorder						voiceMessagingTask.stop();		VoiceRecorder.getInstance().stop();		if (!VoiceRecorder.isClosed())			VoiceRecorder.getInstance().close();	}	/** Creates a new instance of MessageProcessor 	 * @param callListener - the sip Listener used to handle incoming messages	 */	public MessageProcessor(MessageListener messageListener) {		voicePlayer = new VoicePlayer();		this.messageListener = messageListener;		this.addressFactory = MessageListener.addressFactory;		this.sipFactory = MessageListener.sipFactory;		this.headerFactory = MessageListener.headerFactory;		this.messageFactory = MessageListener.messageFactory;		this.configuration = messageListener.getConfiguration();		this.messengerManager = messageListener.sipMeetingManager;	}	/**********************************************************************/	/*                                                                    */	/*                    Handling request messages                       */	/*                                                                    */	/**********************************************************************/	/**	 * Process the INVITE received request	 * @param serverTransaction - the server transaction associated with the request	 * @param invite - the request 	 */	public void processInvite(		ServerTransaction serverTransaction,		Request invite) {		//Strip out the callee		SipURI calleeURI =			(SipURI) ((FromHeader) invite.getHeader(FromHeader.NAME))				.getAddress()				.getURI();		String callee =			"sip:" + calleeURI.getUser() + "@" + calleeURI.getHost();		// Note that IM Calls are always accepted but VOICE calls may be rejected as there is		// only one Voice line.		try {			CallManager callManager =				messageListener.sipMeetingManager.getCallManager();			//The audio device cannot be shared so if the user is already			//in a call, a busy here is sent back			if (callManager.isAlreadyInAudioCall()) {				Response busyHere =					(Response) MessageListener.messageFactory.createResponse(						Response.BUSY_HERE,						invite);				//If the user has put an URL for the BUSY we add i in the CALL-Info			  	if(messageListener.getConfiguration().httpBusy!=null){					CallInfoHeader callInfoHeader=						MessageListener.headerFactory.createCallInfoHeader(					  	MessageListener.addressFactory.createURI(					  	messageListener.getConfiguration().httpBusy));				  	busyHere.addHeader(callInfoHeader);							  }			  System.out.println("send response : " + busyHere.toString());			  serverTransaction.sendResponse(busyHere);			} else {                                				Response ringing =					(Response) MessageListener.messageFactory.createResponse(						Response.RINGING,						invite);				// System.out.println("send response : "+ringing.toString());				serverTransaction.sendResponse(ringing);				AudioCall audioCall = new AudioCall(messageListener);				audioCall.setCallee(callee);				audioCall.setDialog(serverTransaction.getDialog());				audioCall.setStatus(AudioCall.INCOMING_CALL);				System.out.println(					"Audio Call created : "						+ audioCall.getDialog().getDialogId());				callManager.addAudioCall(audioCall);				//Check if someone is inviting us to voice messaging				//or regular RTP media session				boolean voiceMessaging = false;				ContentTypeHeader contentTypeHeader =					(ContentTypeHeader) invite.getHeader(						ContentTypeHeader.NAME);				if (contentTypeHeader == null) {					ListIterator acceptHeaderList =						invite.getHeaders(AcceptHeader.NAME);					while (acceptHeaderList.hasNext() && !voiceMessaging) {						AcceptHeader acceptHeader =							(AcceptHeader) acceptHeaderList.next();						if (acceptHeader							.getContentSubType()							.equalsIgnoreCase("gsm")							|| acceptHeader.getContentSubType().equalsIgnoreCase(								"x-gsm"))							voiceMessaging = true;					}				}				audioCall.setVoiceMesaging(voiceMessaging);				// The SDP tool will be created when you send OK.				messageListener.sipMeetingManager.notifyObserversNewCallStatus(					audioCall);			}		} catch (SipException se) {			se.printStackTrace();		} catch (ParseException pe) {			pe.printStackTrace();		}	}	/**	 * Process the BYE received request	 * @param serverTransaction - the server transaction associated with the request	 * @param bye - the bye request 	 */	public void processBye(ServerTransaction serverTransaction, Request bye) {		CallManager callManager =			messageListener.sipMeetingManager.getCallManager();		//Find the matching call		Call call =			callManager.findCall(serverTransaction.getDialog().getDialogId());		if (call == null) return;		//Send OK		try {			Response ok =				(Response) MessageListener.messageFactory.createResponse(					Response.OK,					bye);			serverTransaction.sendResponse(ok);			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();				}				//Remove the call				System.out.println(					"Audio Call removed : " + call.getDialog().getDialogId());				callManager.removeAudioCall(audioCall);			} else {				IMCall imCall = (IMCall) call;				//Remove the call				System.out.println(					"IM Call removed : " + 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本va欧美va精品| 精品国产免费人成在线观看| 26uuu精品一区二区三区四区在线| 日韩精品一区国产麻豆| 亚洲小说春色综合另类电影| 99久久伊人久久99| 精品国产露脸精彩对白| 午夜精品123| 一本久久综合亚洲鲁鲁五月天| 日韩av不卡在线观看| 91亚洲国产成人精品一区二区三| 久久综合国产精品| 久久99最新地址| 日韩三级高清在线| 美女一区二区在线观看| 欧美一级欧美三级| 香蕉加勒比综合久久| 欧美网站大全在线观看| 自拍偷拍国产精品| 韩国av一区二区| 日韩一区二区高清| 美腿丝袜亚洲综合| 欧美美女一区二区在线观看| 五月天丁香久久| 日韩欧美高清dvd碟片| 亚洲精品ww久久久久久p站| 91丨九色porny丨蝌蚪| 亚洲色图欧美偷拍| 色噜噜狠狠一区二区三区果冻| 亚洲色图在线播放| 欧美视频一区二区三区在线观看| 亚洲在线视频网站| 884aa四虎影成人精品一区| 亚洲综合成人在线视频| 6080午夜不卡| 激情综合网激情| 亚洲精品一区二区在线观看| 国产91富婆露脸刺激对白| 国产精品理论在线观看| 日本道在线观看一区二区| 亚洲国产色一区| 日韩精品一区二区三区三区免费| 奇米在线7777在线精品| 国产日本欧美一区二区| 91麻豆免费在线观看| 亚洲电影一级黄| 欧美mv日韩mv| 国产成人精品在线看| 亚洲女人的天堂| 4hu四虎永久在线影院成人| 精品一区二区三区免费播放| 国产精品卡一卡二| 欧美顶级少妇做爰| jiyouzz国产精品久久| 免费看黄色91| 亚洲成av人影院在线观看网| 国产精品久久久久久久蜜臀 | 欧美一级xxx| 一本大道综合伊人精品热热 | 一本色道久久综合亚洲aⅴ蜜桃 | 日韩欧美卡一卡二| 日本精品一级二级| av在线这里只有精品| 国产伦理精品不卡| 免费视频最近日韩| 蜜臀久久99精品久久久久久9| 亚洲国产日韩a在线播放| 综合色天天鬼久久鬼色| 国产精品久久久久精k8 | 972aa.com艺术欧美| 国产91精品欧美| 国产精品一区一区| 国产精品一区二区视频| 黄色日韩网站视频| 国内精品国产成人| 国产一区二区三区在线观看精品 | 欧美三级视频在线观看| 色综合久久久久综合体桃花网| 成人免费观看男女羞羞视频| 国产一区二区三区在线观看免费| 激情国产一区二区| 国产原创一区二区三区| 国产乱一区二区| 国产呦萝稀缺另类资源| 国产一区二区三区黄视频| 国模无码大尺度一区二区三区 | 国内精品久久久久影院薰衣草| 麻豆精品久久精品色综合| 蜜桃av一区二区在线观看| 激情成人综合网| 成人中文字幕电影| 99久久伊人精品| 欧美性猛交xxxxxx富婆| 91精品婷婷国产综合久久性色| 欧美一区二区三区色| 精品国产乱码久久久久久图片| 欧美精品一区二区在线观看| 国产无人区一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 久久精品72免费观看| 韩国精品免费视频| av电影在线不卡| 欧美区在线观看| 精品999在线播放| 中文字幕免费一区| 一区二区三区在线视频观看58| 亚洲.国产.中文慕字在线| 久热成人在线视频| 成人激情电影免费在线观看| 91一区二区在线| 欧美一区2区视频在线观看| 久久久一区二区三区捆绑**| 国产精品免费视频网站| 亚洲综合网站在线观看| 麻豆精品一区二区av白丝在线| 国产成人av电影在线| 欧美三级日韩三级国产三级| www久久精品| av在线综合网| 91麻豆精品久久久久蜜臀| 久久久久99精品国产片| 一区二区三区在线免费观看| 久久黄色级2电影| 色综合天天视频在线观看| 欧美大片顶级少妇| 亚洲精品乱码久久久久久| 麻豆91精品视频| 色综合天天天天做夜夜夜夜做| 宅男在线国产精品| 自拍偷拍亚洲激情| 韩国精品主播一区二区在线观看| 日本高清免费不卡视频| 26uuu亚洲婷婷狠狠天堂| 一区二区高清在线| 国产精品综合网| 制服丝袜激情欧洲亚洲| 中文字幕一区二区三区在线播放| 蜜臀av亚洲一区中文字幕| 欧美性猛交xxxxxxxx| 国产精品你懂的| 久久99久久99精品免视看婷婷| 欧洲视频一区二区| 国产精品欧美久久久久一区二区| 日本一道高清亚洲日美韩| 色婷婷精品久久二区二区蜜臂av| 久久久噜噜噜久久中文字幕色伊伊| 亚洲成人先锋电影| av男人天堂一区| 久久久久久久久久久久久女国产乱| 一区二区在线观看免费| 成人涩涩免费视频| 精品国精品国产| 日日夜夜一区二区| 日本精品裸体写真集在线观看| 久久网站最新地址| 蜜臀久久99精品久久久久宅男| 欧美亚洲综合在线| 一区二区三区精品视频在线| 精品久久五月天| 免费av网站大全久久| 欧美一区二区三区系列电影| 亚洲福利国产精品| 欧美在线观看一二区| 亚洲卡通动漫在线| 色婷婷亚洲婷婷| 亚洲免费在线看| 97久久精品人人澡人人爽| 国产精品久久久久久久久久免费看| 国产精品亚洲一区二区三区在线| 日韩欧美精品三级| 狠狠色狠狠色合久久伊人| 精品成人佐山爱一区二区| 精品午夜久久福利影院| 久久影音资源网| 国产成人精品网址| 国产精品久久久久影院亚瑟| 成人av资源网站| 夜夜精品浪潮av一区二区三区| 欧美亚洲一区二区在线| 视频一区视频二区中文| 欧美一区二区三区人| 久久超碰97人人做人人爱| 久久婷婷色综合| 99久久久精品| 亚洲一区日韩精品中文字幕| 精品视频123区在线观看| 亚洲成人激情av| 精品日韩av一区二区| 国产电影一区在线| 亚洲女与黑人做爰| 91精品国产欧美日韩| 国内久久精品视频| 中文字幕亚洲在| 在线不卡免费欧美| 精品亚洲成av人在线观看| 欧美激情资源网| 国产精品久久久久一区二区三区| 91亚洲大成网污www| 日韩高清不卡在线| 久久久久久99精品|