/protocols/ss7/m3ua/impl/src/main/java/org/mobicents/protocols/ss7/m3ua/impl/scheduler/M3UAScheduler.java
Java | 71 lines | 33 code | 8 blank | 30 comment | 8 complexity | 9cad1479b311ffd7cdcb98ccc3953e4d MD5 | raw file
1/* 2 * JBoss, Home of Professional Open Source 3 * Copyright 2011, Red Hat, Inc. and individual contributors 4 * by the @authors tag. See the copyright.txt in the distribution for a 5 * full listing of individual contributors. 6 * 7 * This is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of 10 * the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this software; if not, write to the Free 19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 21 */ 22 23package org.mobicents.protocols.ss7.m3ua.impl.scheduler; 24 25import javolution.util.FastList; 26 27import org.apache.log4j.Logger; 28 29/** 30 * 31 * @author amit bhayani 32 * 33 */ 34public class M3UAScheduler implements Runnable { 35 private static final Logger logger = Logger.getLogger(M3UAScheduler.class); 36 37 // TODO : Synchronize tasks? Use Iterator? 38 protected FastList<M3UATask> tasks = new FastList<M3UATask>(); 39 40 public void execute(M3UATask task) { 41 if(task == null){ 42 return; 43 } 44 this.tasks.add(task); 45 } 46 47 public void run() { 48 long now = System.currentTimeMillis(); 49 for (FastList.Node<M3UATask> n = tasks.head(), end = tasks.tail(); (n = n.getNext()) != end;) { 50 M3UATask task = n.getValue(); 51 // check if has been canceled from different thread. 52 if (task.canceled) { 53 tasks.remove(task); 54 } else { 55 56 try { 57 task.run(now); 58 } catch (Exception e) { 59 if (logger.isDebugEnabled()) { 60 logger.debug("Failuer on task run.", e); 61 } 62 } 63 // check if its canceled after run; 64 if (task.canceled) { 65 tasks.remove(task); 66 } 67 } 68 // tempTask = null; 69 } 70 } 71}