summaryrefslogtreecommitdiff
path: root/src/YalpServer
diff options
context:
space:
mode:
Diffstat (limited to 'src/YalpServer')
-rwxr-xr-xsrc/YalpServer/InitServer.java1
-rw-r--r--src/YalpServer/OutputPluginHandler.java55
-rwxr-xr-xsrc/YalpServer/ServerControlImpl.java40
3 files changed, 80 insertions, 16 deletions
diff --git a/src/YalpServer/InitServer.java b/src/YalpServer/InitServer.java
index 3e77ea5..8ad17cf 100755
--- a/src/YalpServer/InitServer.java
+++ b/src/YalpServer/InitServer.java
@@ -54,6 +54,7 @@ public class InitServer {
private static ServerSettings settings = new ServerSettings();
public static InputPluginHandler inputHandler = new InputPluginHandler();
+ public static OutputPluginHandler outputHandler = new OutputPluginHandler();
private ServerControlImpl srvCon;
private ServerControlInterface srv;
diff --git a/src/YalpServer/OutputPluginHandler.java b/src/YalpServer/OutputPluginHandler.java
new file mode 100644
index 0000000..4a12f2b
--- /dev/null
+++ b/src/YalpServer/OutputPluginHandler.java
@@ -0,0 +1,55 @@
+package YalpServer;
+
+import java.util.ArrayList;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+import YalpInterfaces.*;
+
+public class OutputPluginHandler {
+
+ private ArrayList<OutputPlugin> plugins;
+ private static int outputIds = 0;
+
+ private String log4jFile = "log4j_server.conf";
+
+ private static Logger logger =
+ Logger.getLogger("Yalp.Server.OutputPluginHandler");
+
+ public OutputPluginHandler() {
+ PropertyConfigurator.configureAndWatch(log4jFile);
+ logger.debug("OutputPluginHandler()");
+ plugins = new ArrayList<OutputPlugin>();
+ }
+
+ public PluginInfo addPlugin(OutputPlugin plugin)
+ {
+ logger.debug("addPlugin("+plugin.info.name+")");
+ plugin.info.id = outputIds++;
+ plugins.add(plugin);
+ return plugin.info;
+ }
+
+ public void control( OutputHolder ctlOutput, YalpErrorHolder err ) {
+
+ logger.debug("control()");
+
+ for( OutputPlugin plugin : plugins ) {
+ if( plugin.info.id == ctlOutput.value.id ) {
+ plugin.itf.control( ctlOutput, err );
+ return;
+ }
+ }
+
+ YalpError error = new YalpError();
+ error.descr = "output plugin not found";
+ error.msg = "selected output plugin is not available";
+ error.code = YalpErrorCode.ERROR_OUTPUT_PLUGIN_NA;
+ error.level = YalpErrorLevel.ERROR_LEVEL_ERROR;
+ err.value = error;
+
+ Output dummy = new Output();
+ ctlOutput.value = dummy;
+ }
+}
diff --git a/src/YalpServer/ServerControlImpl.java b/src/YalpServer/ServerControlImpl.java
index 44984c7..5612e2c 100755
--- a/src/YalpServer/ServerControlImpl.java
+++ b/src/YalpServer/ServerControlImpl.java
@@ -41,6 +41,7 @@ public class ServerControlImpl extends ServerControlInterfacePOA {
private InitServer srv;
private InputPluginHandler inputHandler;
+ private OutputPluginHandler outputHandler;
private String log4jFile = "log4j_server.conf";
@@ -61,6 +62,7 @@ public ServerControlImpl() {
logger.debug("init()");
srv = _srv;
inputHandler = srv.inputHandler;
+ outputHandler = srv.outputHandler;
}
/*
@@ -191,9 +193,7 @@ public ServerControlImpl() {
error.level = YalpErrorLevel.ERROR_LEVEL_INFO;
err.value = error;
- Output out = new Output();
- out = ctlOutput.value;
- ctlOutput.value = out;
+ outputHandler.control(ctlOutput, err);
}
/*
@@ -221,23 +221,31 @@ public ServerControlImpl() {
{
logger.debug("registerOutputPlugin()");
/* t.b.d. itf handling */
- System.out.println("registering output plugin: " + info.value.name );
+ logger.info("registering output plugin: " + info.value.name );
+ OutputPluginInterface outputItf;
+
+ try {
+ outputItf = OutputPluginInterfaceHelper.narrow(itf);
+ } catch( Exception e ) {
+ e.printStackTrace();
+ return;
+ }
+
+ OutputPlugin newPlugin = new OutputPlugin(outputItf, info.value);
+
+ PluginInfo inf = new PluginInfo();
+
+ if( newPlugin != null )
+ inf = outputHandler.addPlugin( newPlugin );
+
+ info.value = inf;
+
YalpError error = new YalpError();
- error.msg = "huhu";
- error.descr = "hihi";
+ error.msg = "plugin registered";
+ error.descr = "";
error.code = YalpErrorCode.OK;
error.level = YalpErrorLevel.ERROR_LEVEL_INFO;
err.value = error;
- PluginInfo inf = new PluginInfo();
- inf.id = 666;
- inf.name = info.value.name;
- inf.description = info.value.description;
- inf.type = info.value.type;
- inf.supportedTypes= info.value.supportedTypes;
- inf.access = info.value.access;
- inf.maxClients = info.value.maxClients;
- inf.actClients = info.value.actClients;
- info.value = inf;
}
/*