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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dispatcher.java

?? javaP2P技術(shù)內(nèi)幕課程111213141516源代碼
?? JAVA
字號(hào):
/* * Created by IntelliJ IDEA. * User: fsommers * Date: Apr 7, 2002 * Time: 10:26:30 PM * To change template for new class use  * Code Style | Class Templates options (Tools | IDE Options). */package primecruncher;import net.jxta.peergroup.PeerGroup;import net.jxta.peergroup.PeerGroupFactory;import net.jxta.discovery.DiscoveryService;import net.jxta.discovery.DiscoveryListener;import net.jxta.discovery.DiscoveryEvent;import net.jxta.pipe.PipeService;import net.jxta.pipe.OutputPipe;import net.jxta.pipe.PipeID;import net.jxta.exception.PeerGroupException;import net.jxta.protocol.DiscoveryResponseMsg;import net.jxta.protocol.ModuleSpecAdvertisement;import net.jxta.protocol.PipeAdvertisement;import net.jxta.protocol.PeerAdvertisement;import net.jxta.document.*;import net.jxta.id.IDFactory;import net.jxta.endpoint.Message;import net.jxta.endpoint.MessageElement;import net.jxta.codat.Codat;import java.util.*;import java.io.*;import java.net.URL;import java.net.MalformedURLException;import java.net.UnknownServiceException;/** * This class acts as a client-side proxy for the service. */public class Dispatcher implements DiscoveryListener {    private static PeerGroup group;    private static DiscoveryService discoSvc;    private static PipeService pipeSvc;    private static Random random;    //Keep cached list of peers that offer the service    private HashSet peerCache = new HashSet();    private OutputPipe outputPipe;    private HashMap jobMap = new HashMap();    public Dispatcher() {        startJxta();        random = new Random();        doDiscovery();    }    private void doDiscovery() {        System.out.println("Starting service discovery...");  /*        System.out.println("Searching local cache for " +            ServiceConstants.SPEC_NAME + " advertisements");        Enumeration res = null;        try {            res = discoSvc.getLocalAdvertisements(DiscoveryService.ADV,                "Name", ServiceConstants.SPEC_NAME);        } catch (IOException e) {            System.out.println("IO Exception.");        }        if (res != null) {            while (res.hasMoreElements()) {                //this will be a ModuleSpecAdvertisement                //adverts.add(res.nextElement());            }        }    */        System.out.println("Starting remote discovery...");        discoSvc.getRemoteAdvertisements(null, DiscoveryService.ADV,                "Name", ServiceConstants.SPEC_NAME, 1, this);    }    //create request ID. break down list into smaller lists, according to metrics on each    //peer in the cache. Create a new dispatcher job for each peer in a new    //thread, associate that list with the request ID.    //resigter a result listener with each    //each dispatcher job will make a call-back to this class, when (a)    //it got the results, or (b) if the timeout for that peer has expired    //Once all results are received, we call ResultListener and produce the    //result document.    //    public void processPrimes(int low, int high, ResultListener listener) {        //since pending jobs are hashed against a job id, check if no existing job        //has the same id        String jobID = null;        while (jobID == null || (jobMap.containsKey(jobID))) {            jobID = new Long(random.nextLong()).toString();        }        System.out.println("Allocated job id: " + jobID);        PendingJob pendingJob = new PendingJob(jobID, this, listener);        jobMap.put(jobID, pendingJob);        //TODO: prune the cache here        //create array of all known peers        PeerInfoBundle[] peers = (PeerInfoBundle[])                   peerCache.toArray(new PeerInfoBundle[peerCache.size()]);        //TODO: What to do when there are no peers ready to take the job,        //i.e., peers.length == 0        //1. Create an empty PendingJob -- it collects all the DispatcherJobs        // when a job is ready, it calls its pendingJob. whenver a such a call        //arrives, PendingJob checks if all jobs are complete. If so, it calls        //this Dispatcher's jobComplete(). JobComplete() then normalizes the results,        //and calls result listener with the answer. A PendingJob is hashed againsta  JobID.        System.out.println("Peers length is " + peers.length);        //we include the highest number        int segment = high - low + 1;        int mod = segment % peers.length;        int perPiece = (segment - mod)/peers.length;        int l = low;        int h = 0;        int count = 1;        for (int i=0; i < peers.length; i++) {            h = l + perPiece -1;            if (i == peers.length - 1) {                h  += mod;            }            DispatcherJob job = new DispatcherJob(jobID, count, l, h, peers[i], pendingJob, group);            Thread thread = new Thread(job);            thread.setName("Dispatcher job thread " + i);            pendingJob.addJob(job);            thread.start();            l += perPiece;            count++;        }    }    /**     * All computations for a pending job have completed. We're ready.     */    void jobComplete(PendingJob job, Result[] subResults) {        //normalize results, we're done,        Result finalResult = normalizeResults(subResults);        //call result listener with result.        ResultListener listener = job.getResultListener();        listener.resultEvent(finalResult);        jobMap.remove(job.getID());        System.out.println("Removed pending job from job map.");        //shell we null out listener? It should destroy all subjobs as well    }    private Result normalizeResults(Result[] subRes) {        //create a string for the result        StringBuffer b = new StringBuffer();        for (int i=0; i < subRes.length; i++) {            Message mes = subRes[i].getMessage();            MessageElement el = mes.getElement(ServiceConstants.PRIMELIST);            b.append(new String(el.getBytesOffset()));        }        Result finRes = new Result(b.toString());        return finRes;    }    private void pruneCache() {     //do some cache management here - eliminate stale adverts         HashSet adCopy = null;         synchronized(peerCache) {             adCopy = (HashSet)peerCache.clone();         }         //do some pruning here         long currentTime = System.currentTimeMillis();         Iterator it = adCopy.iterator();         while (it.hasNext()) {             ModuleSpecAdvertisement ad = (ModuleSpecAdvertisement)it.next();             if (ad.getLocalExpirationTime() < currentTime + (2 * 60 * 1000)) {                 adCopy.remove(ad);             }         }         //REMIND: Is this OK?         peerCache = adCopy;    }    private void startJxta() {        try {            group = PeerGroupFactory.newNetPeerGroup();            discoSvc = group.getDiscoveryService();            pipeSvc = group.getPipeService();        } catch (PeerGroupException e) {            System.out.println("Can't create net peer group: " + e.getMessage());            System.exit(-1);        }    }    public void discoveryEvent(DiscoveryEvent event) {        System.out.println("DiscoveryEvent called");        DiscoveryResponseMsg  mes = event.getResponse();        String padv = mes.getPeerAdv();        PeerAdvertisement peerAdv = null;        try {            peerAdv = (PeerAdvertisement) AdvertisementFactory.newAdvertisement(                    new MimeMediaType("text/xml"),                    new ByteArrayInputStream(padv.getBytes()));        } catch (IOException ex) {            ex.printStackTrace();        }        //get the ModuleSpecAdvs from this        ModuleSpecAdvertisement moduleSpecAd = null;        Enumeration en = mes.getResponses();        try {            //REMIND: can there be many???            while (en.hasMoreElements()) {                String st = (String)en.nextElement();                moduleSpecAd =                    (ModuleSpecAdvertisement)AdvertisementFactory.newAdvertisement(                            new MimeMediaType("text/xml"),                            new ByteArrayInputStream(st.getBytes()));            }        } catch (IOException e) {            e.printStackTrace();        }        if (peerAdv != null && moduleSpecAd != null) {            PeerInfoBundle bundle = new PeerInfoBundle(peerAdv, moduleSpecAd);            if (!peerCache.contains(bundle)) {                peerCache.add(bundle);                System.out.println("Discovered peer, added to cache");            } else {                System.out.println("Discovered peer, but it's already cached.");            }        }    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss鲁一区二区三区| 久久综合色播五月| 激情文学综合网| 午夜精品福利一区二区蜜股av| 国产日产欧美一区| 欧美精品一区二区三区高清aⅴ| 欧美精品xxxxbbbb| 精品视频免费在线| 欧美性猛交xxxx黑人交| 91福利视频网站| 色婷婷av一区二区三区gif| av中文字幕一区| www.久久久久久久久| 成人午夜av电影| 国产91精品在线观看| 国产成人av电影| 国产在线视频不卡二| 精品一区二区三区免费播放| 日本在线播放一区二区三区| 亚洲第一成人在线| 午夜精品在线看| 精品一二线国产| 不卡的电影网站| 精品视频在线免费看| 日韩一区二区精品在线观看| 久久你懂得1024| 1000部国产精品成人观看| 亚洲女同ⅹxx女同tv| 亚洲va在线va天堂| 激情国产一区二区| www.欧美.com| 5月丁香婷婷综合| 国产蜜臀97一区二区三区| 亚洲色图欧美激情| 日本aⅴ免费视频一区二区三区| 国产伦理精品不卡| 97精品久久久久中文字幕 | 成人免费va视频| 91视频观看视频| 制服丝袜成人动漫| 国产精品久久久久7777按摩| 亚洲一区二区精品久久av| 韩国av一区二区三区四区| 色哟哟在线观看一区二区三区| 日韩丝袜情趣美女图片| 中文字幕中文乱码欧美一区二区| 午夜欧美在线一二页| 丰满亚洲少妇av| 337p亚洲精品色噜噜狠狠| 国产精品欧美极品| 日韩av电影天堂| 91啪亚洲精品| 久久精品一级爱片| 午夜欧美视频在线观看| 成人av影院在线| 日韩精品一区二区三区在线| 亚洲精品视频观看| 国产高清精品久久久久| 91精品国产色综合久久ai换脸 | 欧美成人精品福利| 亚洲伦在线观看| 韩国精品主播一区二区在线观看| 欧美在线观看你懂的| 国产精品日日摸夜夜摸av| 秋霞午夜鲁丝一区二区老狼| 色综合久久久久综合| 久久精品一级爱片| 麻豆精品在线播放| 欧美日韩情趣电影| 亚洲欧美日韩人成在线播放| 国产一区二区三区黄视频 | 成人永久免费视频| 欧美一区二区三区公司| 一区二区三区欧美久久| 99视频热这里只有精品免费| 精品久久五月天| 日本一区中文字幕| 欧美做爰猛烈大尺度电影无法无天| 国产精品免费看片| 国产成人午夜精品影院观看视频 | 欧美精品一区二区三区四区| 亚洲高清视频在线| 91黄色在线观看| 日韩理论片网站| 成人av在线一区二区| 久久久91精品国产一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美男男青年gay1069videost| 一区二区欧美国产| 日本精品视频一区二区三区| 国产精品视频在线看| 国产69精品久久久久777| 欧美精品一区在线观看| 精品亚洲欧美一区| 久久美女高清视频 | 337p粉嫩大胆噜噜噜噜噜91av| 五月激情综合色| 91精品午夜视频| 日韩av成人高清| 欧美一区二区三区免费观看视频 | 久久精品国产亚洲一区二区三区| 欧美日韩成人激情| 青草av.久久免费一区| 欧美一区二区三区人| 麻豆中文一区二区| 久久综合五月天婷婷伊人| 国产高清在线精品| 中文字幕一区二区三区在线观看| 成人国产精品免费网站| 亚洲天堂a在线| 日本伦理一区二区| 亚洲国产视频一区| 91精品国产综合久久婷婷香蕉 | 在线精品视频小说1| 亚洲一二三区在线观看| 在线不卡中文字幕| 精品一区二区久久| 国产精品私人影院| 91久久精品一区二区二区| 亚洲不卡av一区二区三区| 7777精品伊人久久久大香线蕉的| 免费观看成人av| 欧美激情资源网| 91精品1区2区| 麻豆成人91精品二区三区| www国产精品av| 91亚洲国产成人精品一区二区三| 亚洲国产成人高清精品| 精品久久久久久久一区二区蜜臀| 国产精品一二三区在线| 亚洲视频一二区| 欧美一区二视频| 成人福利在线看| 午夜精品一区二区三区免费视频 | 亚洲一区二区在线免费观看视频| 日韩一区二区三区三四区视频在线观看| 精品一区二区三区久久| 最新热久久免费视频| 欧美福利视频导航| 成人综合激情网| 天天色天天操综合| 国产精品伦理一区二区| 欧美三级韩国三级日本三斤| 激情小说亚洲一区| 亚洲永久免费av| 欧美精品一区二区不卡| 91久久精品日日躁夜夜躁欧美| 久久爱www久久做| 亚洲免费色视频| 2019国产精品| 欧美亚洲国产一区二区三区| 国产精品亚洲专一区二区三区| 伊人夜夜躁av伊人久久| 精品欧美一区二区三区精品久久 | 中文字幕日本乱码精品影院| 91精品国产色综合久久不卡电影| 成人开心网精品视频| 人人超碰91尤物精品国产| 中文字幕在线观看一区| 日韩精品一区二区三区老鸭窝| heyzo一本久久综合| 久久精品国内一区二区三区 | 91久久精品国产91性色tv| 国内精品伊人久久久久影院对白| 亚洲综合免费观看高清在线观看| 久久综合久久久久88| 欧美日韩三级一区| 97精品久久久久中文字幕| 精品在线观看免费| 五月天网站亚洲| 亚洲精品伦理在线| 中文字幕av资源一区| 精品福利一区二区三区免费视频| 欧美在线视频不卡| 成人97人人超碰人人99| 狠狠色丁香婷婷综合久久片| 亚洲国产精品精华液网站| 中文字幕日韩av资源站| 国产欧美视频一区二区三区| 日韩欧美国产精品一区| 欧美性受xxxx黑人xyx| 99精品久久久久久| 成人激情小说网站| 国产福利精品导航| 国产一区二区三区| 久久av老司机精品网站导航| 亚洲福利一二三区| 亚洲一区日韩精品中文字幕| 最新中文字幕一区二区三区| 中文字幕电影一区| 国产欧美日韩一区二区三区在线观看| 日韩欧美不卡一区| 日韩无一区二区| 日韩一区二区高清| 日韩欧美在线影院| 91精品国产乱| 91麻豆精品国产91| 91精品国产综合久久久久久 | 天堂成人免费av电影一区| 亚洲综合久久av|