From 4030bb57d8a9c9f3f2e1ba44b6b17492d3c79eaa Mon Sep 17 00:00:00 2001 From: guest Date: Mon, 29 Sep 2008 21:06:20 +0000 Subject: vlcstreamer creates streams now :-), but they're not played back, by the client due to suspicious "cannot fill perfill buffer" error msg git-svn-id: http://manut.eu/svn/yalp/trunk@8 f059d3a0-6783-47b7-97ff-1fe0bbf25129 --- src/YalpServer/InitServer.java | 1 + src/YalpServer/OutputPluginHandler.java | 55 +++++++++++++++++++++++++++++++++ src/YalpServer/ServerControlImpl.java | 40 ++++++++++++++---------- 3 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 src/YalpServer/OutputPluginHandler.java (limited to 'src/YalpServer') 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 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(); + } + + 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; } /* -- cgit v1.2.3