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

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

?? gcprovider.java

?? jtapi for telephone
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package net.sourceforge.gjtapi.raw.dialogic;
import java.util.*;
import net.sourceforge.gjtapi.*;
import javax.telephony.*;
import net.sourceforge.gjtapi.raw.BasicJtapiTpi;
/*
    Copyright (c) 2002 Westhawk Ltd. (www.westhawk.co.uk) 

    All rights reserved. 

    Permission is hereby granted, free of charge, to any person obtaining a 
    copy of this software and associated documentation files (the 
    "Software"), to deal in the Software without restriction, including 
    without limitation the rights to use, copy, modify, merge, publish, 
    distribute, and/or sell copies of the Software, and to permit persons 
    to whom the Software is furnished to do so, provided that the above 
    copyright notice(s) and this permission notice appear in all copies of 
    the Software and that both the above copyright notice(s) and this 
    permission notice appear in supporting documentation. 

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 
    OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
    HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL 
    INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING 
    FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 
    NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
    WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 

    Except as contained in this notice, the name of a copyright holder 
    shall not be used in advertising or otherwise to promote the sale, use 
    or other dealings in this Software without prior written authorization 
    of the copyright holder.
*/
/**
 * GJTAPI Provider for Dialogic GlobalCall 
 * It uses a native library to talk to libgc.
 * Simply translating the events/calls and passing them on.
 * We try to minimize the state that we keep here, since
 * both GC and GJTAPI do this fine, an extra layer would  get in the way.
 * We _depend_ on JDK 1_4 and use dialogic's Signaling mode.
 * There is also code that supports Async polling mode.
 * This was written to run on RedHat 7.2 and Dialogic 5.1
 * and tested on a D/300SCPCI with ctr4 (EuroISDN) on the
 * public network.
 */

public class GCProvider implements BasicJtapiTpi, Runnable {
    
    boolean polling = true;
    boolean done = true;
    int debug_level =0;
    Thread eventThread;
    
    public GCProvider() {
    }
    
    protected String [] addresses;
    protected GCTermData [] terminals;
    protected TelephonyListener nails;
    protected Hashtable calls;
    protected Properties caps;
    
    void debug(int level, String s){
        if (debug_level >= level){
            System.err.println(s);
        }
    }
    
    // GJTAPI methods to fill in
    public String[] getAddresses() throws ResourceUnavailableException {
        return addresses;
    }

    public String[] getAddresses(String terminal) throws InvalidArgumentException {
        return addresses;
    }

    public TermData[] getTerminals() throws ResourceUnavailableException {
        return terminals;
    }
    
    public TermData[] getTerminals(String address) throws InvalidArgumentException {
        return terminals;
    }
    
    public void release(String address, CallId id) throws PrivilegeViolationException, ResourceUnavailableException, MethodNotSupportedException, RawStateException {
        if ((id == null) || !( id instanceof DCall)){
            throw new RawStateException(id,Call.INVALID);
        }
        DCall dc = (DCall) id;
        try {
            int crn = dc.getCrnInt();
            gc_DropCall(crn,true,false);
        } catch (RuntimeException rx){
            throw new RawStateException(id,Call.INVALID);
        }
    }
    
    public void addListener(TelephonyListener ro) {
        nails = ro;
    }
    
    public void answerCall(CallId call, String address, String terminal) throws PrivilegeViolationException, ResourceUnavailableException, MethodNotSupportedException, RawStateException {
        /* should do something with the other params, but.... */
        try {
            DCall dc = (DCall) call;
            int crno = dc.getCrnInt();
            this.gc_AnswerCall(crno,0,false);
        } catch (RuntimeException rx) {
            RawStateException rsx = new RawStateException(call,Call.INVALID);
            throw rsx;
        }
    }
    
    public CallId createCall(CallId id, String address, String term, String dest) throws ResourceUnavailableException, PrivilegeViolationException, InvalidPartyException, InvalidArgumentException, RawStateException, MethodNotSupportedException {
        GCTermData gct = this.getTerminal(term);
        if ((id == null) || !( id instanceof DCall)){
            throw new InvalidArgumentException("Call must be from this TPI");
        }
        
        DCall dc = (DCall) id;

        if (gct == null) {
            throw new InvalidArgumentException(term+" not found");
        }

        try {
            int ldev = gct.getLinedev();
            int crn = gc_MakeCall(ldev,dest,0,false);
            dc.setCrn(new Integer(crn));
            dc.setLinedev(new Integer(ldev));
            dc.setDestaddr(dest);
            dc.setOrigaddr(address);
            calls.put(dc.getCrn(),dc); // use crn as the key -
        } catch (RuntimeException rx){
            throw new RawStateException(dc,Call.INVALID);
        }
        return dc;// actually it's ignored 
    }
    
    public Properties getCapabilities() {
        return caps; // defaults....
    }
    
    
    public void initialize(Map props) throws ProviderUnavailableException {
        //extract addresses and dev the properties

        try {
            srlibinit(polling);
            done = false;
            if (polling) {
                Thread t = new Thread(this,"gc_events");
                t.setPriority(Thread.MAX_PRIORITY);
                eventThread = t;
                t.start();
            }
        } catch (RuntimeException x) {
            throw new ProviderUnavailableException(x.getMessage());
        } 
        //extract addresses and dev from the properties

        parseProps(props);
        caps = new Properties();
        calls = new Hashtable();
        try {
            openAll();
        } catch (RuntimeException x) {
            closeAll();
            gc_stop();
            throw new ProviderUnavailableException(x.getMessage());
        }
    }
    
    
    public void releaseCallId(CallId id) {

    }
    
    public void removeListener(TelephonyListener ro) {
        nails = null;
    }
    
    public CallId reserveCallId(String address) throws InvalidArgumentException {
        DCall rcall = new DCall();
        rcall.setOrigaddr(address);
        return rcall;
    }
    
    public void shutdown() {
        RuntimeException x = null;
        try {
            closeAll();
        } catch (RuntimeException rx) { 
            x = rx;
        }
        gc_stop();
        if (x != null) {
            throw (x);
        }
        done = true;
        if (eventThread != null){
            try {
                eventThread.join(5000);
            } catch (Exception y) {
                y.printStackTrace();
            }
        }
    }
    
 
  // and our 'event' methods - one per GC event type
  
  void alerting(int linedev){
    debug(1,"alerting event on line "+linedev);
    /**@todo: event to deal with */
    /*DCall dc = (DCall) calls.get(new Integer(crn));
    if (dc != null){
        if (dc.getLinedev() != null){
            String te = getTermName(dc.getLinedev().intValue());
            if(nails!=null){
                nails.terminalConnectionRinging(dc, dc.getOrigaddr(),te,CAUSE_NEW_CALL);
            }
        }
    }
    */    
  }
  
  void unblocked(int linedev){
    debug(1,"unblocked event on line "+linedev);    

  }
  
  void blocked(int linedev){
    debug(1,"blocked event on line "+linedev);    
  }
  
  void opened(int linedev){
    debug(1,"opened event on line "+linedev);  
    gc_WaitCall(linedev,0,false);   
  }
  
  void openFailed(int linedev){
    debug(1,"openFailed event on line "+linedev);    
  }
  
  void miscEvent(int linedev, int eventtype){
    debug(1,"got unclaimed event "+eventtype+" on line "+linedev);
  }
  
  /**
   * We handle internally - call Accept immediately
   */
  void offered(int crn){
    debug(1,"offered event on line "+crn);
    gc_AcceptCall(crn,0,false);
  }
  
  void proceeding(int crn){
    debug(1,"proceeding event on call "+crn);
    DCall dc = (DCall) calls.get(new Integer(crn));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线免费播放| 精品黑人一区二区三区久久| 久久精品噜噜噜成人av农村| 国产精品三级电影| 中文字幕一区二区不卡| 日韩一本二本av| 色老头久久综合| 国产高清不卡一区二区| 肉色丝袜一区二区| 亚洲欧美日韩人成在线播放| 久久久久久久久久久黄色| 欧美一区二区啪啪| 欧美中文字幕一区| 色综合一个色综合亚洲| 岛国精品一区二区| 韩国女主播成人在线| 日韩高清不卡一区| 夜夜夜精品看看| 亚洲四区在线观看| 中文在线资源观看网站视频免费不卡 | 欧美日韩一二区| 一本在线高清不卡dvd| 成人高清免费观看| 国产成人久久精品77777最新版本| 日本sm残虐另类| 日韩电影在线观看网站| 天堂在线一区二区| 亚洲成av人综合在线观看| 一区二区三区国产豹纹内裤在线| 亚洲丝袜精品丝袜在线| 国产精品成人一区二区艾草| 国产欧美一区视频| 国产精品欧美一区二区三区| 国产亚洲精品福利| 欧美激情在线看| 日本一区二区三区四区在线视频| 久久奇米777| 久久久久久久久免费| 久久精品人人做人人综合| 久久久欧美精品sm网站| 久久久亚洲欧洲日产国码αv| 久久精品人人做人人爽97| 国产亚洲一区二区三区| 国产精品久久一级| 亚洲精品高清视频在线观看| 亚洲综合色网站| 亚洲成av人片一区二区三区| 日韩黄色一级片| 国内精品视频666| 国产精品99久久久久久久女警| 国产精品自在欧美一区| 风间由美一区二区三区在线观看| av一区二区不卡| 色婷婷久久综合| 精品视频在线免费看| 日韩一区二区免费在线电影| 精品福利av导航| 国产精品久久久久久福利一牛影视 | 日韩视频免费观看高清完整版| 国产精品国产三级国产有无不卡 | 欧美日韩一区成人| 6080日韩午夜伦伦午夜伦| 日韩欧美国产wwwww| 久久色中文字幕| 亚洲欧美日韩国产中文在线| 亚洲大片精品永久免费| 麻豆高清免费国产一区| 国产福利一区二区三区在线视频| av一区二区三区四区| 欧美老肥妇做.爰bbww| 亚洲精品一区二区三区99| 亚洲欧洲国产日韩| 日韩成人dvd| 成人国产精品视频| 欧美久久久久久久久中文字幕| 日韩网站在线看片你懂的| 国产人成一区二区三区影院| 亚洲欧美色图小说| 九一久久久久久| 91麻豆免费看| 精品国产污污免费网站入口| 中文字幕精品三区| 同产精品九九九| 成人蜜臀av电影| 日韩一级免费一区| 日韩一区中文字幕| 极品少妇xxxx偷拍精品少妇| 99精品视频一区二区| 欧美一区二区三区公司| 中文字幕在线免费不卡| 裸体歌舞表演一区二区| 91丨porny丨户外露出| 欧美精品一区二区久久婷婷| 亚洲五月六月丁香激情| 国产精品91一区二区| 欧美亚洲国产一区二区三区va| 久久蜜桃av一区精品变态类天堂| 一区二区三区欧美日| 国产美女一区二区| 91精品国产综合久久久久久| 亚洲三级电影网站| 国产高清不卡一区二区| 欧美一区二区三区白人| 亚洲午夜电影在线观看| 成人ar影院免费观看视频| 欧美成人女星排行榜| 亚洲综合999| 99riav久久精品riav| 久久综合九色综合欧美98 | 狠狠色丁香久久婷婷综合丁香| 色噜噜夜夜夜综合网| 中文在线资源观看网站视频免费不卡| 久久精品久久久精品美女| 欧美在线视频不卡| 亚洲精品视频在线看| 成人av免费网站| 国产欧美一区二区三区在线看蜜臀| 久久成人免费日本黄色| 777亚洲妇女| 日本91福利区| 日韩一级二级三级| 日韩高清不卡一区| 亚洲色图另类专区| 97精品超碰一区二区三区| 亚洲国产精品精华液2区45| 国产呦精品一区二区三区网站| 日韩精品最新网址| 麻豆精品在线看| 日韩亚洲电影在线| 精品一区二区三区日韩| 精品国产一区二区精华| 国产乱码字幕精品高清av | 国产午夜精品一区二区三区视频| 国内外成人在线| 久久久久久久久久久久电影 | 综合欧美一区二区三区| a亚洲天堂av| 亚洲伦理在线免费看| 99v久久综合狠狠综合久久| 亚洲三级小视频| 欧美日韩一区精品| 三级亚洲高清视频| 欧美电影免费观看高清完整版在| 麻豆国产精品官网| 久久中文娱乐网| 成人免费看片app下载| 国产精品国产三级国产aⅴ无密码| 成人性生交大片免费| 日韩理论电影院| 欧美日韩免费一区二区三区 | 欧美va在线播放| 国产电影精品久久禁18| 中文字幕亚洲电影| 欧美日韩黄色一区二区| 麻豆成人久久精品二区三区红 | 欧美日韩一区久久| 日韩高清在线不卡| 国产亚洲精品aa| 色激情天天射综合网| 日韩精品一二三区| 久久九九99视频| 97精品视频在线观看自产线路二| 亚洲成人激情综合网| 欧美一区二区视频网站| 风间由美性色一区二区三区| 亚洲人成网站色在线观看| 欧美日韩一区二区三区免费看 | 欧美少妇一区二区| 极品少妇一区二区| 亚洲精品国产精华液| 日韩免费观看高清完整版| 丁香天五香天堂综合| 亚洲一区二区三区免费视频| 亚洲精品一线二线三线无人区| www.久久精品| 免费日本视频一区| 欧美极品另类videosde| 欧美在线不卡视频| 国产乱子伦一区二区三区国色天香| 亚洲少妇30p| 精品免费一区二区三区| 91蝌蚪porny成人天涯| 精品在线播放免费| 亚洲激情五月婷婷| 久久综合久久鬼色| 中文一区一区三区高中清不卡| 欧美性三三影院| 国产99精品在线观看| 午夜精品123| 中文字幕在线一区免费| 欧美mv日韩mv| 91成人国产精品| 粉嫩一区二区三区性色av| 亚洲成精国产精品女| 中文字幕第一区综合| 日韩美一区二区三区| 欧美亚洲动漫精品| 92国产精品观看| 国产成人精品一区二| 另类小说欧美激情|