Package net.jini.core.lookup

Examples of net.jini.core.lookup.ServiceItem


                     * selected (it may have been returned from a previously
                     * queried lookup).
                     */
        int r = (Math.abs(random.nextInt())) % nItems;
        for(int j=0; j<nItems; j++) {
      ServiceItem sItem = sm.items[(j+r) % nItems];
      if(sItem == nullcontinue;
                        if( !filterPassFail(sItem,filter) ) continue;
      if(!isArrayContainsServiceItem(sItemSet, sItem))
          sItemSet.add(sItem);
      if(sItemSet.size() >= maxMatches) {
View Full Code Here


        synchronized(cacheListener) {
            cache = createLookupCache(tmpl,filter,cacheListener,waitDur);
            long duration = cache.getLeaseDuration();
            while ( duration > 0 ) {
                cacheListener.wait(duration);
                ServiceItem items[] = cacheListener.getServiceItem();
                for(int i=0; i<items.length; i++) {
                    if(!isArrayContainsServiceItem(sItemSet, items[i])) {
                        sItemSet.add(items[i]);
                    }//endif
                }//end loop
View Full Code Here

    {
  int len = sm.items.length;
  if(len > 0) {
      int rand = Math.abs(random.nextInt()) % len;
      for(int i=0; i<len; i++) {
    ServiceItem sItem = sm.items[(i+rand) % len];
    if(sItem == nullcontinue;
                if( !filterPassFail(sItem,filter) ) continue;
    return sItem;
      }//end loop
  }//endif
View Full Code Here

    {
  Iterator iter = a.iterator();
  while(iter.hasNext()) {
      Object o = iter.next();
      if ( !(o instanceof ServiceItem )) continue;
      ServiceItem sa = (ServiceItem)o;
      if(    sa.serviceID.equals(s.serviceID)
                && LookupAttributes.equal(sa.attributeSets,s.attributeSets)
                && (sa.service.equals(s.service)) )
    return true;
  }//end loop
View Full Code Here

                            return;
                        }//endif
                        itemReg = new ServiceItemReg( reg.proxy, srvcItem );
                        serviceIdMap.put( thisTaskSid, itemReg );
                    }//end sync(serviceIdMap)
                    ServiceItem newFilteredItem =
                                  filterMaybeDiscard(srvcItem,reg.proxy,false);
                    if(newFilteredItem != null) {
                        addServiceNotify(newFilteredItem);
                    }//endif
                }//endif
View Full Code Here

            }//end constructor

            public void run() {
                logger.finest("ServiceDiscoveryManager - UnmapProxyTask "
                              +"started");
                ServiceItem item = null;
                synchronized(itemReg) {
                    itemReg.removeProxy(reg.proxy);//disassociate the LUS
                    if( itemReg.hasNoProxys() ) {//no more LUSs, remove map
                        item = itemReg.filteredItem;
                    }//endif
View Full Code Here

      ArrayList items = new ArrayList(1);
      Iterator iter = getServiceIdMapEntrySetIterator();
      while(iter.hasNext()) {
    Map.Entry e = (Map.Entry)iter.next();
    ServiceItemReg itemReg = (ServiceItemReg)e.getValue();
    ServiceItem itemToFilter;
    ServiceItem itemToDiscard;
    synchronized(itemReg) {
                    if(    (itemReg.isDiscarded())
                        || (itemReg.filteredItem == null) ) continue;
                    /* Make a copy because the filter may change it to null */
        itemToFilter = new ServiceItem
                                      ( (itemReg.filteredItem).serviceID,
                                        (itemReg.filteredItem).service,
                                        (itemReg.filteredItem).attributeSets );
                }//end sync(itemReg)
                Object serviceToDiscard = itemToFilter.service;
View Full Code Here

                                          boolean matchMatchEvent )
        {
            /* Save the pre-event state. Update the post-event state after
             * applying the filter.
             */
      ServiceItem oldItem;
      ServiceItem oldFilteredItem;
      synchronized(itemReg) {
                oldItem = itemReg.item;
                oldFilteredItem = itemReg.filteredItem;
    if(itemReg.isDiscarded()) {
                    itemReg.item = newItem;//capture changes for discard
                    itemReg.filteredItem = null;//so filter will be retried
                    return;
                }//endif
                itemReg.addProxy(proxy);
      }//end sync(itemReg)
            /* For an explanation of the logic of the following if-else-block,
             * refer to the method description above.
             */
            boolean attrsChanged = false;
            boolean versionChanged = false;
            boolean isSameVersion = sameVersion(newItem,oldItem);
            if( matchMatchEvent || isSameVersion ) {
                /* Same version, determine if the attributes have changed.
                 * But first, replace the new service proxy with the old
                 * service proxy so the client always uses the old proxy
                 * (at least, until the version is changed).
                 */
                newItem.service = oldItem.service;
                /* Now compare attributes */
                attrsChanged = !LookupAttributes.equal(newItem.attributeSets,
                                                       oldItem.attributeSets);
                if (logger.isLoggable(Level.FINEST)) {
                    if((oldItem != null) && (oldItem.attributeSets != null)) {
                        for(int i=0; i<(oldItem.attributeSets).length; i++) {
                            logger.finest("itemMatchMatchChange - "
                                          +"OLD Attribute["+i+"] = "
                                          +(oldItem.attributeSets)[i]);
                        }//end loop
                    }//endif
                    logger.finest("    ");
                    if((newItem != null) && (newItem.attributeSets != null)) {
                        for(int i=0; i<(newItem.attributeSets).length; i++) {
                            logger.finest("itemMatchMatchChange - "
                                          +"NEW Attribute["+i+"] = "
                                          +(newItem.attributeSets)[i]);
                        }//end loop
                    }//endif
                }//endif(FINEST)

                if (logger.isLoggable(Level.FINER)) {
                    if(attrsChanged) {
                        if(matchMatchEvent) {
                            logger.finer("itemMatchMatchChange - attributes "
                                         +"changed [TRANSITION_MATCH_MATCH]");
                        } else if( isSameVersion ) {
                            logger.finer("ServiceDiscoveryManager."
                                         +"itemMatchMatchChange - attributes "
                                         +"changed [same version]");
                        }//endif
                    } else {//(!attrChanged)
                        if(matchMatchEvent) {
                            logger.finer("itemMatchMatchChange - "
                                         +"attributes NOT changed ["
                                         +"TRANSITION_MATCH_MATCH] ..."
                                         +"return");
                        } else if( isSameVersion ) {
                            logger.finer("itemMatchMatchChange - "
                                         +"attributes NOT changed [same"
                                         +"version] ... return");
                        }//endif
                    }//endif
                }//endif

                if(!attrsChanged) return;//no change, no need to filter
            } else {//(!matchMatchEvent && !same version) ==> re-registration
                versionChanged = true;
                logger.finer("itemMatchMatchChange - version changed");
            }//endif
            /* Now apply the filter, and send events if appropriate */
            ServiceItem newFilteredItem = filterMaybeDiscard
                                                       (newItem, proxy, true);
            if(newFilteredItem != null) {
                /* Passed the filter, okay to send event(s). */
                if(attrsChanged) {
                    logger.finer("itemMatchMatchChange - send serviceChanged");
View Full Code Here

            if(filter == null) {
                addFilteredItemToMap(item,item);
                return item;
            }//endif
            /* Make a copy to filter because the filter may modify it. */
            ServiceItem filteredItem = new ServiceItem(item.serviceID,
                                                       item.service,
                                                       item.attributeSets);
            boolean pass = filter.check(filteredItem);
            /* Handle filter fail */
            if(!pass) {
                ServiceID srvcID = item.serviceID;
                ServiceItemReg itemReg = null;
                synchronized(serviceIdMap) {
                    itemReg = (ServiceItemReg)serviceIdMap.get(srvcID);
                }//end sync(serviceIdMap)
                if(itemReg != null) {
                    if(sendEvent) {
                        ServiceItem oldFilteredItem;
                        synchronized(itemReg) {
                            oldFilteredItem = itemReg.filteredItem;
                        }//end sync(itemReg)
                        removeServiceIdMap(srvcID, oldFilteredItem);
                    } else {
View Full Code Here

            ServiceItemReg itemReg = null;
            synchronized(serviceIdMap) {
                itemReg = (ServiceItemReg)serviceIdMap.get(item.serviceID);
            }//end sync(serviceIdMap)
            if(itemReg == null) return;
            ServiceItem oldFilteredItem;
            synchronized(itemReg) {
                oldFilteredItem = itemReg.filteredItem;
                /* If there's been any change in what is being discarded for
                 * filter retry, then update the item field in the map to
                 * capture that change; and set the filteredItem field to
View Full Code Here

TOP

Related Classes of net.jini.core.lookup.ServiceItem

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.