public void setCountDirect(String name, int count) { if (count < 0) { containers.remove(name); } else { CountDownLatchContainer latch = containers.get(name); if (latch == null) { latch = new CountDownLatchContainer(name); containers.put(name, latch); } latch.setCountDirect(count); } }
public void countDown(String name) { CountDownLatchContainer latch = containers.get(name); if (latch != null) { if (latch.countDown() == 0) { containers.remove(name); } } }
public int getCount(String name) { CountDownLatchContainer latch = containers.get(name); return latch != null ? latch.getCount() : 0; }
public boolean setCount(String name, int count) { if (count < 0) { containers.remove(name); return false; } else { CountDownLatchContainer latch = containers.get(name); if (latch == null) { latch = new CountDownLatchContainer(name); containers.put(name, latch); } return latch.setCount(count); } }
@Override protected void readInternal(ObjectDataInput in) throws IOException { super.readInternal(in); int len = in.readInt(); if (len > 0) { data = new ArrayList<CountDownLatchContainer>(len); for (int i = 0; i < len; i++) { CountDownLatchContainer container = new CountDownLatchContainer(); container.readData(in); data.add(container); } } } }
CountDownLatch c2 = new CountDownLatch(1); CountDownLatchContainer c = new CountDownLatchContainer(Arrays.asList( c1, c2)); e.submit(new MultiWaiter(c, 4, TimeUnit.SECONDS));
@Override protected void writeInternal(ObjectDataOutput out) throws IOException { super.writeInternal(out); int len = data != null ? data.size() : 0; out.writeInt(len); if (len > 0) { for (CountDownLatchContainer container : data) { container.writeData(out); } } }
public void add(CountDownLatchContainer latch) { String name = latch.getName(); containers.put(name, latch); }
public boolean setCount(String name, int count) { if (count < 0) { containers.remove(name); return false; } else { CountDownLatchContainer latch = containers.get(name); if (latch == null) { latch = new CountDownLatchContainer(name); containers.put(name, latch); } return latch.setCount(count); } }
@Override protected void readInternal(ObjectDataInput in) throws IOException { super.readInternal(in); int len = in.readInt(); if (len > 0) { data = new ArrayList<CountDownLatchContainer>(len); for (int i = 0; i < len; i++) { CountDownLatchContainer container = new CountDownLatchContainer(); container.readData(in); data.add(container); } } } }
@Override public IdentifiedDataSerializable create(int typeId) { switch (typeId) { case CONTAINER: return new CountDownLatchContainer(); case AWAIT_OPERATION: return new AwaitOperation(); case COUNT_DOWN_LATCH_BACKUP_OPERATION: return new CountDownLatchBackupOperation(); case COUNT_DOWN_LATCH_REPLICATION_OPERATION: return new CountDownLatchReplicationOperation(); case COUNT_DOWN_OPERATION: return new CountDownOperation(); case GET_COUNT_OPERATION: return new GetCountOperation(); case SET_COUNT_OPERATION: return new SetCountOperation(); default: return null; } } };
@Override protected void writeInternal(ObjectDataOutput out) throws IOException { super.writeInternal(out); int len = data != null ? data.size() : 0; out.writeInt(len); if (len > 0) { for (CountDownLatchContainer container : data) { container.writeData(out); } } }
public void add(CountDownLatchContainer latch) { String name = latch.getName(); containers.put(name, latch); }
public void setCountDirect(String name, int count) { if (count < 0) { containers.remove(name); } else { CountDownLatchContainer latch = containers.get(name); if (latch == null) { latch = new CountDownLatchContainer(name); containers.put(name, latch); } latch.setCountDirect(count); } }
@Override public IdentifiedDataSerializable create(int typeId) { switch (typeId) { case CONTAINER: return new CountDownLatchContainer(); case AWAIT_OPERATION: return new AwaitOperation(); case COUNT_DOWN_LATCH_BACKUP_OPERATION: return new CountDownLatchBackupOperation(); case COUNT_DOWN_LATCH_REPLICATION_OPERATION: return new CountDownLatchReplicationOperation(); case COUNT_DOWN_OPERATION: return new CountDownOperation(); case GET_COUNT_OPERATION: return new GetCountOperation(); case SET_COUNT_OPERATION: return new SetCountOperation(); default: return null; } } };
public int getCount(String name) { CountDownLatchContainer latch = containers.get(name); return latch != null ? latch.getCount() : 0; }
public void countDown(String name) { CountDownLatchContainer latch = containers.get(name); if (latch != null) { if (latch.countDown() == 0) { containers.remove(name); } } }
public boolean shouldWait(String name) { CountDownLatchContainer latch = containers.get(name); return latch != null && latch.getCount() > 0; }
public boolean shouldWait(String name) { CountDownLatchContainer latch = containers.get(name); return latch != null && latch.getCount() > 0; }
@Override public Operation getBackupOperation() { CountDownLatchService service = getService(); CountDownLatchContainer container = service.getCountDownLatchContainer(name); int count = container != null ? container.getCount() : 0; return new CountDownLatchBackupOperation(name, count); }