App
Classes | Public Member Functions | Protected Attributes | List of all members
mhr.appcore.tasks.WorkingTask Class Reference

Třída, která provádí asynchronní úpravy na obraze. More...

Inheritance diagram for mhr.appcore.tasks.WorkingTask:

Classes

class  Lock
 Třída, jejíž instance slouží k synchronizaci vláken. Obsahuje synchronizované položky a flagy. More...
 

Public Member Functions

 WorkingTask (AppCore app) throws NullPointerException
 defaultní konstruktor
 
void setThreadEH (Thread.UncaughtExceptionHandler handler)
 
synchronized void dispose ()
 
boolean isRunning ()
 Zjistí, jestli vlákno běží.
 
void clearCommandQueue ()
 Vyprázdní frontu příkazů bez zastavení vlákna.
 
synchronized void start ()
 Spustí vlákno pro vykonávání příkazů. Spuštění neznamená vynulování fronty příkazů!!!
 
synchronized void stop ()
 Zastaví vlákno pro vykonávání příkazů.Zastavení vlákna neznamená vymazání fronty příkazů!!!
 
void addCommand (AppCommand command)
 Přidá příkaz do fronty.
 
void unsetExceptionFlag ()
 Způsobí shození flagu výjimky a návrat k normální funkci vlákna.
 
void run ()
 

Protected Attributes

AppCore app
 Odkaz na aplikaci, pod kterou běží.
 
Thread thread
 Vlákno, na kterém se spouštějí jednotlivé příkazy.
 
Lock lock = new Lock()
 Instance třídy, na které se provádí synchronizace a která slouží k ovládání vláken.
 
Thread.UncaughtExceptionHandler handler = null
 

Detailed Description

Třída, která provádí asynchronní úpravy na obraze.

Definition at line 13 of file WorkingTask.java.

Constructor & Destructor Documentation

mhr.appcore.tasks.WorkingTask.WorkingTask ( AppCore  app) throws NullPointerException
inline

defaultní konstruktor

Parameters
app
Exceptions
NullPointerException

Definition at line 45 of file WorkingTask.java.

{
if (app == null) {
throw new NullPointerException("app should not be null");
}
this.app = app;
}

Member Function Documentation

void mhr.appcore.tasks.WorkingTask.addCommand ( AppCommand  command)
inline

Přidá příkaz do fronty.

Parameters
command

Definition at line 133 of file WorkingTask.java.

{
synchronized (lock) {
lock.commands.add(command);
} else {
command.dispose();
}
lock.notifyAll();
}
}
void mhr.appcore.tasks.WorkingTask.clearCommandQueue ( )
inline

Vyprázdní frontu příkazů bez zastavení vlákna.

Definition at line 85 of file WorkingTask.java.

{
synchronized (lock) {
AppCommand c;
while ((c = lock.commands.pollFirst()) != null) {
c.dispose();
}
}
}
synchronized void mhr.appcore.tasks.WorkingTask.dispose ( )
inline

Definition at line 62 of file WorkingTask.java.

boolean mhr.appcore.tasks.WorkingTask.isRunning ( )
inline

Zjistí, jestli vlákno běží.

Returns

Definition at line 74 of file WorkingTask.java.

{
if (thread != null) {
return true;
} else {
return false;
}
}
void mhr.appcore.tasks.WorkingTask.run ( )
inline

Definition at line 157 of file WorkingTask.java.

{
AppCommand cmd = null;
while (true) { // bezi stale
synchronized (lock) {
while (true) {
if (lock.EXIT_FLAG) {
return;
}
cmd = this.lock.commands.poll();
if (cmd != null) {
break; // vyskočíme a zpracovavame
}
try {
this.lock.wait();
} catch (InterruptedException e) {
return;
}
}
}
try {
cmd.execute(app);
} catch (AppNonFatalException e) {
PDExceptionFeedback f = app.getExceptionFeedback();
if (f != null) {
synchronized (lock) {
AppCommand c;
while ((c = lock.commands.pollFirst()) != null) {
c.dispose();
}
lock.notifyAll();
}
f.feedback(e);
} else {
throw e;
}
}
}
}
void mhr.appcore.tasks.WorkingTask.setThreadEH ( Thread.UncaughtExceptionHandler  handler)
inline

Definition at line 52 of file WorkingTask.java.

{
synchronized (lock) {
this.handler = handler;
if (thread != null) {
thread.setUncaughtExceptionHandler(handler);
}
}
}
synchronized void mhr.appcore.tasks.WorkingTask.start ( )
inline

Spustí vlákno pro vykonávání příkazů. Spuštění neznamená vynulování fronty příkazů!!!

Definition at line 97 of file WorkingTask.java.

{
if (thread != null) {
return;
}
thread = new Thread(this);
if (handler != null) {
thread.setUncaughtExceptionHandler(handler);
}
synchronized (lock) { // Tohle by nemělo být zapotřebí....
lock.EXIT_FLAG = false;
}
thread.start();
}
synchronized void mhr.appcore.tasks.WorkingTask.stop ( )
inline

Zastaví vlákno pro vykonávání příkazů.Zastavení vlákna neznamená vymazání fronty příkazů!!!

Definition at line 114 of file WorkingTask.java.

{
if (thread == null) {
return;
}
synchronized (lock) {
lock.EXIT_FLAG = true;
lock.notifyAll();
}
try {
thread.join();
} catch (InterruptedException exc) {
}
thread = null;
}
void mhr.appcore.tasks.WorkingTask.unsetExceptionFlag ( )
inline

Způsobí shození flagu výjimky a návrat k normální funkci vlákna.

Definition at line 147 of file WorkingTask.java.

{
synchronized (lock) {
lock.notifyAll();
}
}

Member Data Documentation

AppCore mhr.appcore.tasks.WorkingTask.app
protected

Odkaz na aplikaci, pod kterou běží.

Definition at line 30 of file WorkingTask.java.

Thread.UncaughtExceptionHandler mhr.appcore.tasks.WorkingTask.handler = null
protected

Definition at line 33 of file WorkingTask.java.

Lock mhr.appcore.tasks.WorkingTask.lock = new Lock()
protected

Instance třídy, na které se provádí synchronizace a která slouží k ovládání vláken.

Definition at line 32 of file WorkingTask.java.

Thread mhr.appcore.tasks.WorkingTask.thread
protected

Vlákno, na kterém se spouštějí jednotlivé příkazy.

Definition at line 31 of file WorkingTask.java.


The documentation for this class was generated from the following file: