📄 dischandler.java
字号:
package catalog_search;import net.jxta.peergroup.PeerGroup;import java.io.ByteArrayInputStream;import java.util.Vector;import org.w3c.dom.Document;import catalog_exchange.CatalogManager;import net.jxta.impl.protocol.ResolverQuery;import net.jxta.impl.protocol.ResolverResponse;import net.jxta.protocol.ResolverQueryMsg;import net.jxta.protocol.ResolverResponseMsg;import net.jxta.resolver.QueryHandler;import net.jxta.resolver.ResolverService;import net.jxta.id.ID;public class DiscHandler implements QueryHandler { private ResolverService resSvc; private Vector registeredListeners=new Vector(); private String handlerName; private CatalogManager catMan; private Document doc; private ID pid; private Vector []pids; private boolean itr=false; public DiscHandler (ResolverService r,Vector rl,String hn,ID i) { resSvc=r; registeredListeners=rl; handlerName=hn; catMan=new CatalogManager(10); doc=null; pid=i; pids=new Vector[2]; } public int processQuery(ResolverQueryMsg rqm) { System.out.println("CatalogSearchDiscQuery received"); CatalogSearchDiscQuery csdq= new CatalogSearchDiscQuery(new ByteArrayInputStream(rqm.getQuery().getBytes())); if(csdq.getSearchCatalog().equals("Local Peer Catalog")) return 0; doc=catMan.getCatalog(csdq.getSearchCatalog()); if (doc.getChildNodes()!=null) { CatalogSearchDiscResponse csdr=new CatalogSearchDiscResponse(pid,csdq.getSearchCatalog(),true); ResolverResponse resp=new ResolverResponse(handlerName,null,rqm.getQueryId(),csdr.toString()); resSvc.sendResponse(rqm.getSrc(),resp); return ResolverService.OK; } else { CatalogSearchDiscResponse csdr=new CatalogSearchDiscResponse(pid,csdq.getSearchCatalog(),false); ResolverResponse resp=new ResolverResponse(handlerName,null,rqm.getQueryId(),csdr.toString()); resSvc.sendResponse(rqm.getSrc(),resp); return ResolverService.OK; } } public void processResponse(ResolverResponseMsg rrm) { CatalogSearchDiscResponse csdr= new CatalogSearchDiscResponse(new ByteArrayInputStream(rrm.getResponse().getBytes())); System.out.println("CatalogSearchDiscResponse received"); String temp=null; if(pids[1]!=null) { temp=(String)pids[1].lastElement(); if(temp.compareTo(csdr.getSearchCatalog())!=0) { pids[0].add(csdr.getId()); pids[1].add(csdr.getSearchCatalog()); } itr=true; } else { pids[0]=new Vector(); pids[1]=new Vector(); pids[0].add(csdr.getId()); pids[1].add(csdr.getSearchCatalog()); itr=true; } } public void sendQuery(CatalogSearchQuery csq,int qid,PeerGroup pg) { int i=0; for (i=0;i<csq.getCatN();i++) { if(((csq.getSearchCatalog(i))!=null)) { ResolverQuery rq = new ResolverQuery(handlerName, null, pg.getPeerID().toString(), csq.toString(), qid); resSvc.sendQuery(null,rq); } } } public boolean isTableReady() { return this.itr; } public Vector [] getTable() { return pids; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -