2025年JXTAP2P编程技术例程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

[精]JXTA,P2P编程技术例程(4)

JXTA,P2P编程技术例程(4)

作者:yxiong|曰期:-07-30|字体:大中小

广告处理

在我們建立了发現监听器之後,它将不停的加入某些新发現的module阐明通告到我們的當地缓冲中。每次processPrimes()措施被调用的時候,客户peer将尝试连接module阐明通告代表的peer,接入到他們的输入通道中,传递一种消息去初始化這個peer的质数发現服务。)

這個措施的第一种元素就是决定我們可以委托以工作的peer集合,应當记得一种通告有一种期限限制,因此我們要消除那些不在有效的通告。

Publicint[]processPrimes(intlow,inthigh){

SetsetCopy=null;

synchronized(adverts){

SetsetCopy=(Set)adverts.clone();

}

ArrayListworkingList=newArrayList();

ArrayListexpired=newArrayList();

longcurrentTime=System.getCurrentTimeMillis();

Iteratorit=workingSet.iterator();

while(it.hasNext()){

ModuleSpecAdvertisementad=(ModuleSpecAdvertisement)it.next();

if(ad.getLocalExpirationTime()currentTime+(2*60*1000)){

workingList.addElement(ad);

}else{

expired.addElement(ad);

}

}

removeExpired(expired);

前述的程序段执行了對一种简朴缓冲中被发現的服务的管理,让removeExpired()措施去删除那些過期和即将過期的通告(這裏没有详细阐明removeExpired())。

當我們有了一种有效通告的集合之後,我們可以開始對它們進行操作以获得我們需要用来发送消息的管道通告。.

注意這個工作的分发是人為的:某些peer也許比其他peer更有能力某些,某些又也許网络连接方面更好些。這些不一样应當在分派工作的時候都被考虑到,实际上,也不會故意把工作分派為過多的片段,由于网络通信時间也許比花在实际计算质数的時间更多。(這個例子的目的是阐明怎么從一种ModuleSpecAdvertisement得到一种管道通告,這样创立一种新的消息,然後怎样通過管道发送一种消息。)

Listing16.14展示了這些自然数列是怎样被分為一种一种的子列的,每個子列又能和一种将送往别的peer的消息相對应。消息被插入到一种hash表映射中,映射的键值显示了消息的状态:与否已經发送了,我們与否收到了它的成果,

Listing16.14CreatingNewMessages

MapmessageMap=newHashMap();

intsize=workingList.size()

intmod=high%size;

high-=mod;

intperPiece=high/size;

for(inti=0;isize;i++){

//createanewmessage

Messagemsg=pipeSvc.createMessage();

msg.setString(ServiceConstants.LOW_INT,low);

//lastmessagewillgettocomputeabitmore

if(i==size-1){

high=low+perPiece?1+mod;

}else{

high=low+perPiece-1;

}

msg.setString(ServiceConstants.HIGH_INT,high);

low+=perPiece;

//weneithersentthemessage,nordidwegetaresponse

StatusMapstatusMap=newStatusMap(false,false);

StatusMapstatusMap=newStatusMap(false,false);

mess

您可能关注的文档

文档评论(0)

199****0723 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档