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

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

?? messengermanager.java

?? 是一個用java實現的
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
/*
 * MessengerManager.java
 *
 * Created on November 25, 2003, 9:14 AM
 */

package gov.nist.applet.phone.ua;

import javax.sip.TransactionUnavailableException;
import javax.sip.InvalidArgumentException;
import javax.sip.ClientTransaction;
import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.ListeningPoint;
import javax.sip.header.CallInfoHeader;
import javax.sip.header.Header;
import javax.sip.header.FromHeader;
import javax.sip.header.ViaHeader;
import javax.sip.header.MaxForwardsHeader;
import javax.sip.header.ExpiresHeader;
import javax.sip.header.ToHeader;
import javax.sip.header.CSeqHeader;
import javax.sip.header.ContactHeader;
import javax.sip.header.CallIdHeader;
import javax.sip.header.ContentTypeHeader;
import javax.sip.address.Address;
import javax.sip.address.SipURI;
import javax.sip.message.Request;
import javax.sip.message.Response;
import javax.sip.header.AcceptHeader;

import javax.sdp.SdpFactory;
import javax.sdp.SessionDescription;
import javax.sdp.Version;
import javax.sdp.Origin;
import javax.sdp.Time;
import javax.sdp.Connection;
import javax.sdp.SessionName;
import javax.sdp.MediaDescription;
import javax.sdp.SdpException;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Vector;

import gov.nist.applet.phone.media.MediaManager;
import gov.nist.applet.phone.media.messaging.VoiceRecorder;
import gov.nist.applet.phone.ua.call.AudioCall;
import gov.nist.applet.phone.ua.call.Call;
import gov.nist.applet.phone.ua.call.CallManager;
import gov.nist.applet.phone.ua.call.IMCall;
import gov.nist.applet.phone.ua.pidf.parser.AddressTag;
import gov.nist.applet.phone.ua.pidf.parser.AtomTag;
import gov.nist.applet.phone.ua.pidf.parser.MSNSubStatusTag;
import gov.nist.applet.phone.ua.pidf.parser.PresenceTag;
import gov.nist.applet.phone.ua.presence.PresentityManager;
import gov.nist.applet.phone.ua.presence.Subscriber;

import gov.nist.applet.phone.ua.gui.NISTMessengerGUI;

/**
 * This class will manage all the calls and their status, and the subscriptions
 * to the presence.
 * This application has been designed in following the MVC design pattern.
 * Thus this class is part of the Model.
 *
 * @author  DERUELLE Jean
 */
public class MessengerManager extends java.util.Observable {
    private MessageListener messageListener = null;
    protected CallManager callManager = null;
    private PresentityManager presentityManager = null;
    protected RegisterStatus registerStatus = null;
    private SipURI userSipURI = null;
    private Vector contactList = null;
    protected boolean presenceAllowed = false;
    private NISTMessengerGUI appletHandle;
    protected boolean reRegisterFlag = false;
    
    /** Creates a new instance of CallManager
     * @param sipURI - the sipURI of the user
     */
    public MessengerManager(
    Configuration configuration,
    NISTMessengerGUI appletHandle) {
        MediaManager.detectSupportedCodecs();
        contactList = new Vector();
        callManager = new CallManager();
        //Create a new instance of the sip Listener
        messageListener =
        new MessageListener(this, configuration, appletHandle);
        messageListener.start();
        
        presentityManager = new PresentityManager(this);
        //Set the registration status to Not registered
        registerStatus = new RegisterStatus();
        String userURI = messageListener.getConfiguration().userURI;
        try {
            //Create the SIP URI for the user URI
            String user = userURI.substring(0, userURI.indexOf("@"));
            String host =
            userURI.substring(userURI.indexOf("@") + 1, userURI.length());
            userSipURI =
            MessageListener.addressFactory.createSipURI(user, host);
            //userSipURI .setTransportParam(messageListener.getConfiguration().signalingTransport);
        } catch (ParseException ex) {
            System.out.println(userURI + " is not a legal SIP uri! " + ex);
        }
    }
    
    /**
     * Call the user specified in parameter
     * @param contactURI - the user to call
     */
    public void call(String contactURI) {
        if(!callManager.isAlreadyInAudioCall()){
            //Create a new Call
            AudioCall call = new AudioCall(messageListener);
            //Store the callee in the call
            contactURI = contactURI.trim();
            call.setCallee(contactURI);
            if (messageListener
            .getConfiguration()
            .mediaTransport
            .equalsIgnoreCase("tcp"))
                call.setVoiceMesaging(true);
            callManager.addAudioCall(call);
            String sdpBody = null;
            if (!call.getVoiceMessaging())
                sdpBody = createSDPBody(call.getMediaManager().getAudioPort());
            sendInvite(contactURI, sdpBody);
        }
    }
    
    /**
     * Answer the call, i.e. answer ok to an incoming invite
     * after have found the good media session
     */
    public void answerCall(String caller) {
        //Find the Audio call
        AudioCall call = callManager.findAudioCall(caller);
        //Get the request
        Request request = call.getDialog().getFirstTransaction().getRequest();
        //Getting the media Manager for this call
        MediaManager mediaManager = call.getMediaManager();
        //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
        Object responseSdpBody = null;
        if (!call.getVoiceMessaging()) {
            ContentTypeHeader contentTypeHeader =
            (ContentTypeHeader) request.getHeader(ContentTypeHeader.NAME);
            String contentType = contentTypeHeader.getContentType();
            String subType = contentTypeHeader.getContentSubType();
            System.out.println("the other end invite us to " + subType);
            
            if (contentType.equals("application") && subType.equals("sdp")) {
                //Get the Sdp Body
                String content = new String(request.getRawContent());
                responseSdpBody = mediaManager.getResponseSdpBody(content);
            }
        }
        sendOK(responseSdpBody, caller);
    }
    
    /**
     * Cancel the current call
     */
    public void cancelCall(String calleeURI) {
        //Find the Audio call
        AudioCall call = callManager.findAudioCall(calleeURI);
        Request request = call.getDialog().getFirstTransaction().getRequest();
        if (call.getDialog().isServer()) {
            System.out.println("Cannot cancel a server transaction");
            
        }
        ClientTransaction clientTransaction =
        (ClientTransaction) call.getDialog().getFirstTransaction();
        try {
            if (call.getDialog().getState() == javax.sip.DialogState.EARLY ||
                call.getDialog().getState() == null) {
                Request cancel = clientTransaction.createCancel();
                ClientTransaction cancelTransaction =
                messageListener.sipProvider.getNewClientTransaction(cancel);
                cancelTransaction.sendRequest();
            } else System.out.println("Too late to cancel -- send BYE instead!");
        } catch (SipException ex) {
            System.out.println("Failed to send the CANCEL request " + ex);
        }
    }
    
    /**
     * End the current call
     */
    public void endCall(String calleeURI) {
        //Find the Audio call
        AudioCall call = callManager.findAudioCall(calleeURI);
	if (call == null) {
		System.out.println("Call not found " +  calleeURI );
		return;
	}
        //Request
        Request request = null;
        try {
            request = call.getDialog().createRequest("BYE");
        } catch (SipException ex) {
            System.out.println("Could not create the bye request! " + ex);
        }
        //Transaction
        ClientTransaction clientTransaction = null;
        try {
            clientTransaction =
            messageListener.sipProvider.getNewClientTransaction(request);
            System.out.println(request.toString());
            call.getDialog().sendRequest(clientTransaction);
            
        } catch (TransactionUnavailableException ex) {
            System.out.println(
            "Could not create a register transaction!\n"
            + "Check that the Registrar address is correct!"
            + " "
            + ex);
        } catch (SipException ex) {
            System.out.println(
            "Could not send out the register request! " + ex);
        }
        if (call.getVoiceMessaging()) {
            //Stop the voice messages schedule and the voiceRecorder
            messageListener.messageProcessor.stopVoiceMessagingSchedule();
        } else {
            call.getMediaManager().stopMediaSession();
        }
    }
    
    /**
     * Add a contact to our contact list
     * @param contact - contact to add
     */
    public void addContact(String contact) {
        if (isInContactList(contact))
            System.out.println(
            "The contact is already in our contact list,"
            + "he's not going to be added");
        else
            contactList.addElement(contact);
    }
    
    /**
     * Remove a contact to our contact list
     * @param contact - contact to remove
     */
    public void removeContact(String contact) {
        if (isInContactList(contact))
            contactList.remove(contact);
        else
            System.out.println(
            "The contact is not in our contact list,"
            + "he can not going to be removed");
    }
    
    /**
     * Check if the contact is in the contact List
     * @param contactAddress - the contact
     * @return true if the contact is in the contact List
     */
    protected boolean isInContactList(String contactAddress) {
        Enumeration e = contactList.elements();
        while (e.hasMoreElements()) {
            if (((String) e.nextElement()).equals(contactAddress))
                return true;
        }
        return false;
    }
    
    /**
     * Stop an opened instantMessaging Session
     * @param calleeURI - sip address of the person the application is chatting with
     */
    public void stopInstantMessagingSession(String calleeURI) {
        calleeURI = calleeURI.trim();
        IMCall call = callManager.findIMCall(calleeURI);
        //If no instant messaging session exists
        if (call == null)
            return;
        Request bye = null;
        try {
            bye = call.getDialog().createRequest("BYE");
        } catch (SipException se) {
            se.printStackTrace();
        }
        //Transaction
        ClientTransaction clientTransaction = null;
        try {
            clientTransaction =
            messageListener.sipProvider.getNewClientTransaction(bye);
        } catch (TransactionUnavailableException ex) {
            System.out.println("Could not create a bye transaction!\n" + ex);
        }
        System.out.println(bye.toString());
        try {
            call.getDialog().sendRequest(clientTransaction);
        } catch (SipException ex) {
            System.out.println("Could not send out the bye request! " + ex);
        }
    }
    
    /**
     *
     * @param requestName
     * @param callee
     * @return
     */
    protected Request createRequest(
    String requestName,
    SipURI callee,
    SipURI caller) {
        //Listening Point
        ListeningPoint listeningPoint =
        messageListener.sipProvider.getListeningPoint();
        //Request URI
        SipURI requestURI = null;
        try {
            requestURI = callee;
            requestURI.setTransportParam(
            messageListener.getConfiguration().signalingTransport);
            //Call ID
            CallIdHeader callIdHeader =
            messageListener.sipProvider.getNewCallId();
            //CSeq
            CSeqHeader cSeqHeader =
            MessageListener.headerFactory.createCSeqHeader(1, requestName);
            //From Header
            Address fromAddress =
            MessageListener.addressFactory.createAddress(
            MessageListener.addressFactory.createSipURI(
            caller.getUser(),
            caller.getHost()));
            FromHeader fromHeader =
            MessageListener.headerFactory.createFromHeader(
            fromAddress,
            generateTag());
            //ToHeader
            Address toAddress =
            MessageListener.addressFactory.createAddress(
            MessageListener.addressFactory.createSipURI(
            callee.getUser(),
            callee.getHost()));
            // From and To are logical identifiers (should have no parameters)
            ToHeader toHeader =
            MessageListener.headerFactory.createToHeader(toAddress, null);
            //ViaHeader
            ArrayList viaHeaders = new ArrayList();
            ViaHeader viaHeader =
            MessageListener.headerFactory.createViaHeader(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av在线免费观看| 日韩一区二区三区免费观看| 在线电影欧美成精品| 国产日本一区二区| 蜜臀久久99精品久久久久久9| eeuss影院一区二区三区| 日韩三级中文字幕| 亚洲国产欧美一区二区三区丁香婷| 九色综合狠狠综合久久| 国产亚洲短视频| 奇米精品一区二区三区在线观看一 | 亚洲综合视频在线| 91久久国产最好的精华液| 日日噜噜夜夜狠狠视频欧美人 | 久草在线在线精品观看| 色欧美片视频在线观看 | 亚洲大片精品永久免费| 国产成人综合在线观看| 日韩欧美国产麻豆| 无吗不卡中文字幕| 欧美熟乱第一页| 亚洲视频图片小说| 91免费视频观看| 亚洲图片你懂的| 丁香婷婷综合五月| 国产日韩欧美综合在线| 国产精品中文字幕日韩精品| 欧美成人一区二区三区片免费 | 972aa.com艺术欧美| 国产欧美日韩视频在线观看| 国产一区二区三区av电影| 日韩免费观看高清完整版| 久久精品国产一区二区三| 日韩欧美在线不卡| 免费观看日韩av| 久久久久久久久久久久电影 | 欧美日韩亚洲综合一区二区三区| 亚洲免费三区一区二区| 欧美性一区二区| 视频一区在线视频| 正在播放亚洲一区| 精品制服美女久久| 国产丝袜欧美中文另类| 99免费精品在线| 亚洲欧美电影一区二区| 欧美亚洲动漫精品| 另类小说色综合网站| 精品久久五月天| 国产成人av在线影院| 国产精品麻豆欧美日韩ww| av成人老司机| 日本一区二区不卡视频| 欧美日韩激情在线| 2021中文字幕一区亚洲| www欧美成人18+| 日韩视频永久免费| 久久久国产精品麻豆| 亚洲人成电影网站色mp4| 亚洲国产成人在线| 亚洲一区在线观看视频| 黄一区二区三区| 国产91在线|亚洲| 亚洲天堂精品视频| 欧美性大战久久久久久久| 免费在线观看一区| 中文字幕国产精品一区二区| 色美美综合视频| 欧美aaaaaa午夜精品| 中文字幕第一页久久| 欧美日韩一区久久| 国产乱人伦偷精品视频免下载| 最新日韩在线视频| 日韩欧美国产三级| 日本久久一区二区| 国产成人高清视频| 日本中文一区二区三区| 中文字幕制服丝袜成人av| 91精品国产欧美一区二区成人| 国产精品1区二区.| 亚洲丶国产丶欧美一区二区三区| 久久综合精品国产一区二区三区 | 风间由美一区二区av101| av动漫一区二区| 久久疯狂做爰流白浆xx| 亚洲日本va午夜在线影院| 久久综合久久综合亚洲| 欧美日韩在线不卡| 成人听书哪个软件好| 美女视频网站久久| 午夜一区二区三区视频| 中文字幕在线观看不卡| 精品久久久久久久人人人人传媒 | 精品欧美一区二区久久| 欧美日韩一区二区三区免费看| 成人小视频免费在线观看| 久久精品av麻豆的观看方式| 午夜精品久久久久久久久| 亚洲精品你懂的| 国产精品美女久久福利网站| 久久久久久久久久电影| 久久综合色天天久久综合图片| 欧美色精品在线视频| 在线视频国内自拍亚洲视频| 99久久伊人网影院| 福利一区在线观看| 国产一区美女在线| 另类小说色综合网站| 日本午夜精品视频在线观看| 日韩综合在线视频| 日韩电影免费一区| 亚洲午夜免费福利视频| 夜夜精品浪潮av一区二区三区| 国产精品护士白丝一区av| 国产精品麻豆视频| 精品视频1区2区3区| 蜜臀av一区二区| 国产美女娇喘av呻吟久久| 亚洲va欧美va人人爽| 日韩精品一区二区三区视频播放 | 91久久久免费一区二区| 午夜精品久久久| 亚洲激情自拍偷拍| 一二三四区精品视频| 亚洲一区二区三区激情| 亚洲一区二区在线播放相泽| 午夜久久久久久| 日本欧美一区二区三区乱码| 日韩av午夜在线观看| 久久不见久久见免费视频7| 久久国产夜色精品鲁鲁99| 精品一区二区三区在线观看| 国产在线精品一区二区不卡了| 国产一区二区三区日韩| jvid福利写真一区二区三区| 91福利国产精品| 日韩欧美激情一区| 日本一区二区免费在线| 亚洲六月丁香色婷婷综合久久| 亚洲第一电影网| 激情小说欧美图片| 99久久婷婷国产综合精品电影| 日本久久电影网| 日韩欧美在线网站| 中文字幕国产一区| 亚洲福利电影网| 国产精品一区二区三区网站| 91色在线porny| 日韩精品在线看片z| 国产欧美久久久精品影院| 亚洲第一激情av| 国产成人99久久亚洲综合精品| 欧亚一区二区三区| 精品少妇一区二区| 一级中文字幕一区二区| 精品制服美女久久| 欧美色综合天天久久综合精品| 精品国精品国产尤物美女| 亚洲精品中文字幕在线观看| 青青草97国产精品免费观看无弹窗版| 成人性色生活片| 日韩一级成人av| 一区二区三区国产精品| 国产精品一区二区在线观看不卡 | 国产福利一区二区| 欧美视频自拍偷拍| 国产精品大尺度| 久久精品免费看| 色天天综合色天天久久| 国产午夜精品在线观看| 午夜欧美在线一二页| 99精品黄色片免费大全| 精品成人一区二区| 亚洲1区2区3区视频| 97久久精品人人做人人爽50路| 日韩欧美国产精品| 日韩av一区二区在线影视| 色婷婷亚洲精品| 国产精品久久久久婷婷| 国产在线国偷精品产拍免费yy| 欧美一区三区二区| 亚洲一区二区中文在线| 色伊人久久综合中文字幕| 国产日韩成人精品| 国产精品69毛片高清亚洲| 欧美成人一区二区三区在线观看| 婷婷国产在线综合| 欧美日韩亚洲不卡| 亚洲中国最大av网站| 日本久久电影网| 亚洲在线视频一区| 在线一区二区三区| 亚洲精品国产高清久久伦理二区| av一区二区三区四区| 国产精品久久久久久户外露出| 国产精品888| 中文字幕在线观看一区| 色综合色综合色综合色综合色综合| 日本一二三四高清不卡| 成人av影视在线观看| 亚洲欧洲精品一区二区精品久久久|