add a newer timer and two files to test it
[mfw.git] / src / mfw / timer / newer / EventGroup.java
blob4eaaa36a8e5c278861b73fefae9ed62c1f3657ba
1 /**
2 * Copyright 2011 Huize Dai <geb.1989@gmail.com>
4 * This file is part of MFW.
6 * MFW is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * MFW is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with MFW. If not, see <http://www.gnu.org/licenses/>.
19 package mfw.timer.newer;
21 public class EventGroup extends TimerEvent implements Event {
23 private final Event[] atoms;
24 private int ptr = 0;
25 private boolean isContinue = true;
26 private final Object lock = new Object();
28 public EventGroup(int len) {
29 atoms = new Event[len];
32 public boolean add(Event event) {
33 synchronized (lock) {
34 if (ptr < atoms.length) {
35 atoms[ptr++] = event;
36 return true;
37 } else {
38 return false;
43 public void close() {
44 isContinue = false;
47 public boolean isContinue() {
48 for (int i = 0; i < ptr;) {
49 if (!atoms[i].isContinue()) {
50 synchronized (lock) {
51 atoms[i] = atoms[--ptr];
53 } else {
54 i++;
57 return isContinue;