* @author BonYong Lee{@literal <bonyong.lee@samsung.com>} (S-Core)\r
*\r
*/\r
-abstract public class\r
-AbstractServer\r
-implements Server, Runnable\r
-{\r
+abstract public class AbstractServer implements Server, Runnable {\r
+\r
/**\r
* logger for this object\r
*/\r
protected final Logger logger = LoggerFactory.getLogger( getClass() );\r
- \r
+\r
/**\r
* {@link Thread} to use in this server\r
*/\r
protected Thread thread = null;\r
- \r
+\r
/**\r
* lock for #state\r
*/\r
protected Lock lock = new ReentrantLock();\r
- \r
+\r
/**\r
* server state\r
* @see ServerState\r
*/\r
protected ServerState state = ServerState.Terminated;\r
- \r
+\r
/**\r
* Server name to use thread name\r
*/\r
protected final String name;\r
- \r
+\r
/**\r
* default constructor\r
*/\r
- public AbstractServer()\r
- {\r
+ public AbstractServer() {\r
this( null );\r
}\r
- \r
+\r
/**\r
* constructor with name\r
* \r
* @param name server name\r
*/\r
- public\r
- AbstractServer(\r
- final String name\r
- )\r
- {\r
+ public AbstractServer( final String name ) {\r
this.name = name;\r
}\r
- \r
+\r
/**\r
* return server name\r
* @return server name\r
* \r
* @see #name\r
*/\r
- public\r
- String\r
- getName()\r
- {\r
+ public String getName() {\r
return name;\r
}\r
- \r
+\r
/**\r
* return server status\r
* @return server status\r
* @see #state\r
* @see ServerState\r
*/\r
- public\r
- ServerState\r
- getStatus()\r
- {\r
+ public ServerState getStatus() {\r
lock.lock();\r
- try\r
- {\r
+ try {\r
return this.state;\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
}\r
}\r
- \r
+\r
/**\r
* Change server state\r
* \r
* @see #state\r
* @see ServerState\r
*/\r
- protected\r
- void\r
- setStatus(\r
- final ServerState state\r
- )\r
- {\r
+ protected void setStatus( final ServerState state ) {\r
lock.lock();\r
- try\r
- {\r
+ try {\r
this.state = state;\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
- synchronized ( this )\r
- {\r
+ synchronized ( this ) {\r
this.notifyAll();\r
}\r
}\r
}\r
- \r
+\r
/**\r
* check server state is one of <code>states</code>\r
* \r
* \r
* @return boolean value if server state is one of <code>states</code>\r
*/\r
- public\r
- boolean\r
- isState(\r
- final ServerState... states\r
- )\r
- {\r
+ public boolean isState( final ServerState... states ) {\r
lock.lock();\r
- try\r
- {\r
- for ( final ServerState state : states )\r
- {\r
- if ( this.state.equals( state ) )\r
- {\r
+ try {\r
+ for ( final ServerState state : states ) {\r
+ if ( this.state.equals( state ) ) {\r
return true;\r
}\r
}\r
return false;\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
}\r
}\r
- \r
+\r
/**\r
* wait until server state become one of <code>states</code>\r
* \r
* @param states server states\r
*/\r
- public\r
- void\r
- waitState(\r
- final ServerState... states\r
- )\r
- {\r
+ public void waitState( final ServerState... states ) {\r
while ( !isState( states ) ) {\r
- try\r
- {\r
- synchronized ( this )\r
- {\r
+ try {\r
+ synchronized ( this ) {\r
this.wait();\r
}\r
- } catch ( final InterruptedException e )\r
- {\r
+ } catch ( final InterruptedException e ) {\r
+ logger.error(e.getMessage(), e);\r
}\r
}\r
}\r
- \r
- \r
\r
/* (non-Javadoc)\r
* @see java.lang.Runnable#run()\r
*/\r
@Override\r
- public\r
- void\r
- run()\r
- {\r
- if ( isState( ServerState.Halting ) )\r
- {\r
+ public void run() {\r
+ if ( isState( ServerState.Halting ) ) {\r
setStatus( ServerState.Terminated );\r
return ;\r
}\r
- try\r
- {\r
+ try {\r
initialize();\r
- \r
+\r
lock.lock();\r
- try\r
- {\r
- if ( isState( ServerState.Halting ) )\r
- {\r
+ try {\r
+ if ( isState( ServerState.Halting ) ) {\r
return ;\r
}\r
setStatus( ServerState.Running );\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
}\r
- while ( !isState( ServerState.Halting ) )\r
- {\r
+\r
+ while ( !isState( ServerState.Halting ) ) {\r
process();\r
}\r
- }\r
- catch ( Exception e )\r
- {\r
+ } catch ( Exception e ) {\r
logger.error( "Error occurred:", e );\r
- }\r
- finally\r
- {\r
+ } finally {\r
terminate();\r
setStatus( ServerState.Terminated );\r
}\r
- \r
}\r
\r
/* (non-Javadoc)\r
* @see org.tizen.common.daemon.Server#boot()\r
*/\r
@Override\r
- public\r
- void\r
- boot()\r
- throws ServerException\r
- {\r
+ public void boot() throws ServerException {\r
lock.lock();\r
- try\r
- {\r
- if ( !isState( ServerState.Terminated ) )\r
- {\r
+ try {\r
+ if ( !isState( ServerState.Terminated ) ) {\r
throw new IllegalStateException();\r
}\r
- \r
+\r
final String name = getName();\r
- if ( null == name )\r
- {\r
+ if ( null == name ) {\r
thread = new Thread( this );\r
- }\r
- else \r
- {\r
+ } else {\r
thread = new Thread( this, name );\r
}\r
thread.setDaemon( true );\r
thread.start();\r
setStatus( ServerState.Initializing );\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
}\r
}\r
* @see org.tizen.common.daemon.Server#down()\r
*/\r
@Override\r
- public\r
- void\r
- down()\r
- throws ServerException\r
- {\r
+ public void down() throws ServerException {\r
lock.lock();\r
- try\r
- {\r
+ try {\r
if ( isState( ServerState.Terminated, ServerState.Halting ) ) {\r
throw new IllegalStateException();\r
}\r
setStatus( ServerState.Halting );\r
- }\r
- finally\r
- {\r
+ } finally {\r
lock.unlock();\r
}\r
- \r
}\r
\r
/**\r
* @throws Exception If exception is occurred\r
*/\r
abstract protected void initialize() throws ServerException;\r
- \r
+\r
/**\r
* Unit process of main job\r
* \r
* @throws Exception If exception is occurred\r
*/\r
abstract protected void process() throws Exception;\r
- \r
+\r
/**\r
* Server clean-up process\r
*/\r
abstract protected void terminate();\r
+\r
}\r
* \r
* @author BonYong Lee{@literal <bonyong.lee@samsung.com>} (S-Core)\r
*/\r
-public class\r
-DeferredTaskManager\r
-{\r
+public class DeferredTaskManager {\r
/**\r
* Default value for idle time\r
* \r
* 3 seconds\r
*/\r
protected static final long DEFAULT_IDLE_TIME = 3 * 1000;\r
- \r
+\r
/**\r
* Logger for this class\r
*/\r
protected final Logger logger = LoggerFactory.getLogger( getClass() );\r
- \r
+\r
/**\r
* Idle time\r
*/\r
protected long idleTime;\r
- \r
+\r
/**\r
* last scheduled time\r
*/\r
protected long scheduledTime = DEFAULT_IDLE_TIME;\r
- \r
+\r
/**\r
* timer for schedule\r
*/\r
protected Timer timer = null;\r
- \r
+\r
/**\r
* Task\r
*/\r
protected final Runnable task;\r
- \r
+\r
/**\r
* Constructor with task\r
* \r
* \r
* @see #DefferedTaskManager(Runnable, long)\r
*/\r
- public\r
- DeferredTaskManager(\r
- final Runnable task\r
- )\r
- {\r
+ public DeferredTaskManager( final Runnable task ) {\r
this( task, DEFAULT_IDLE_TIME );\r
}\r
- \r
+\r
/**\r
* Constructor with task and ide time\r
* \r
* \r
* @see #setIdleTime(long)\r
*/\r
- public\r
- DeferredTaskManager(\r
- final Runnable task,\r
- final long idleTime\r
- )\r
- {\r
+ public DeferredTaskManager( final Runnable task, final long idleTime ) {\r
// Fast-fail\r
notNull( task );\r
this.task = task;\r
this.idleTime = idleTime;\r
logger.debug( "Idle time: {}", idleTime );\r
}\r
- \r
+\r
/**\r
* Return idle time for deferring\r
* \r
* @return idle time\r
*/\r
- synchronized public\r
- long\r
- getIdleTime()\r
- {\r
+ synchronized public long getIdleTime() {\r
return this.idleTime;\r
}\r
\r
* \r
* @param idleTime time to wait\r
*/\r
- synchronized public\r
- void\r
- setIdleTime( final long idleTime )\r
- {\r
+ synchronized public void setIdleTime( final long idleTime ) {\r
this.idleTime = idleTime;\r
- \r
- if ( null != this.timer )\r
- {\r
+\r
+ if ( null != this.timer ) {\r
schedule( this.idleTime + this.scheduledTime - System.currentTimeMillis() );\r
}\r
- \r
}\r
- \r
+\r
/**\r
* Schedule to run task after {@code delay}\r
* \r
* @param delay delay time in milliseconds\r
*/\r
- synchronized public\r
- void\r
- schedule( long delay )\r
- {\r
+ synchronized public void schedule( long delay ) {\r
cancel();\r
- if ( 0 < delay )\r
- {\r
+ if ( 0 < delay ) {\r
this.timer = new Timer();\r
scheduledTime = System.currentTimeMillis();\r
- this.timer.schedule( new TimerTask()\r
- {\r
- \r
+ this.timer.schedule( new TimerTask() {\r
@Override\r
- public void run()\r
- {\r
+ public void run() {\r
task.run();\r
logger.debug( "{} was run", task );\r
}\r
}, delay );\r
logger.debug( "{} will be run after {}", task, delay );\r
- }\r
- else\r
- {\r
+ } else {\r
task.run();\r
logger.debug( "{} was run", task );\r
}\r
- \r
}\r
- \r
+\r
/**\r
* Notify any change\r
*/\r
- synchronized public\r
- void\r
- tick()\r
- {\r
+ synchronized public void tick() {\r
schedule( this.idleTime );\r
}\r
- \r
+\r
/**\r
* Cancel scheduled task\r
*/\r
- synchronized public\r
- void\r
- cancel()\r
- {\r
- if ( null != timer )\r
- {\r
+ synchronized public void cancel() {\r
+ if ( null != timer ) {\r
timer.cancel();\r
timer = null;\r
logger.debug( "{} canceled", task );\r