App

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

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) {
if (!lock.EXCEPTION_PENDING_FLAG) {
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.

{
stop();
clearCommandQueue();
}

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) {
lock.EXCEPTION_PENDING_FLAG = true;
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.EXCEPTION_PENDING_FLAG = false;
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:

- /home/xxx/eclipse_workspaces/app/appcore/src/mhr/appcore/tasks/WorkingTask.java