1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.zookeeper.server.watch; 20 21 import java.util.Set; 22 import org.apache.zookeeper.Watcher; 23 import org.apache.zookeeper.server.util.BitHashSet; 24 25 public class WatcherOrBitSet { 26 27 private Set<Watcher> watchers; 28 private BitHashSet watcherBits; 29 WatcherOrBitSet(final Set<Watcher> watchers)30 public WatcherOrBitSet(final Set<Watcher> watchers) { 31 this.watchers = watchers; 32 } 33 WatcherOrBitSet(final BitHashSet watcherBits)34 public WatcherOrBitSet(final BitHashSet watcherBits) { 35 this.watcherBits = watcherBits; 36 } 37 contains(Watcher watcher)38 public boolean contains(Watcher watcher) { 39 if (watchers == null) { 40 return false; 41 } 42 return watchers.contains(watcher); 43 } 44 contains(int watcherBit)45 public boolean contains(int watcherBit) { 46 if (watcherBits == null) { 47 return false; 48 } 49 return watcherBits.contains(watcherBit); 50 } 51 size()52 public int size() { 53 if (watchers != null) { 54 return watchers.size(); 55 } 56 if (watcherBits != null) { 57 return watcherBits.size(); 58 } 59 return 0; 60 } 61 62 } 63