summaryrefslogtreecommitdiffstats
path: root/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-10-12 03:14:07 +0200
committersnowleo <schneeleo@gmail.com>2011-10-12 03:14:26 +0200
commit860d446d28776ec842fa53e8e08538d4e093d6e9 (patch)
tree0c4598eae4eb8c59fd36e8312eab1b27a8018794 /EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java
parent9ec398b39b0f48392a9d635041b392c7dba2ca0c (diff)
downloadEssentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar
Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.gz
Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.lz
Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.xz
Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.zip
EssentialsUpdate WIP
Diffstat (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java')
-rw-r--r--EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java b/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java
new file mode 100644
index 000000000..0b3546231
--- /dev/null
+++ b/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java
@@ -0,0 +1,54 @@
+package f00f.net.irc.martyr;
+
+import java.util.Observable;
+
+/**
+ * Provides a framework for an auto service. Does enable by default.
+ * Splits the 'update' method into two, 'updateState' and 'updateCommand'.
+ * Also provides thread safety on all methods.
+ */
+public abstract class GenericAutoService extends GenericCommandAutoService
+{
+
+protected GenericAutoService( IRCConnection connection )
+{
+ super( connection );
+}
+
+public synchronized void enable()
+{
+ if( enabled )
+ return;
+
+ connection.addStateObserver( this );
+
+ super.enable();
+}
+
+public synchronized void disable()
+{
+ if( !enabled )
+ return;
+
+ connection.removeStateObserver( this );
+
+ super.disable();
+}
+
+public synchronized void update( Observable observer, Object updated )
+{
+ if( !enabled )
+ throw new IllegalStateException("This observer is not enabled." );
+ if( updated instanceof State )
+ updateState( (State)updated );
+ else
+ super.update( observer, updated );
+}
+
+protected abstract void updateState( State state );
+
+}
+
+
+
+