[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3006 - in freeway/src/org/gnu/freeway: . cwrappers/util se
From: |
mdonoughe |
Subject: |
[GNUnet-SVN] r3006 - in freeway/src/org/gnu/freeway: . cwrappers/util server services/impl util |
Date: |
Sun, 11 Jun 2006 19:03:41 -0700 (PDT) |
Author: mdonoughe
Date: 2006-06-11 19:03:33 -0700 (Sun, 11 Jun 2006)
New Revision: 3006
Added:
freeway/src/org/gnu/freeway/util/NativeService.java
Modified:
freeway/src/org/gnu/freeway/GNUNetDaemon.java
freeway/src/org/gnu/freeway/cwrappers/util/CWrapper.java
freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
freeway/src/org/gnu/freeway/server/CPluginLoader.java
freeway/src/org/gnu/freeway/services/impl/StatsService.java
freeway/src/org/gnu/freeway/util/AbstractService.java
Log:
services.impl types now extend NativeService and implement Service so
that they can be loaded from the existing code.
some fixes in SwitchTableGenerator
AbstractService now supports a constructor without arguments so
NativeService can create instances without hardcoding names in.
Modified: freeway/src/org/gnu/freeway/GNUNetDaemon.java
===================================================================
--- freeway/src/org/gnu/freeway/GNUNetDaemon.java 2006-06-11 21:06:07 UTC
(rev 3005)
+++ freeway/src/org/gnu/freeway/GNUNetDaemon.java 2006-06-12 02:03:33 UTC
(rev 3006)
@@ -8,6 +8,7 @@
import org.gnu.freeway.util.*;
import org.gnu.freeway.util.io.*;
import org.gnu.freeway.util.net.*;
+import org.gnu.freeway.services.impl.StatsService;
import java.util.logging.*;
@@ -140,6 +141,7 @@
service(HelloExchangeService.class);
service(PingPongService.class);
service(ConnectionService.class);
+ service(StatsService.class);
((CoreService) service(CoreService.class)).loadProtocols();
if (firstStart || download) {
Modified: freeway/src/org/gnu/freeway/cwrappers/util/CWrapper.java
===================================================================
--- freeway/src/org/gnu/freeway/cwrappers/util/CWrapper.java 2006-06-11
21:06:07 UTC (rev 3005)
+++ freeway/src/org/gnu/freeway/cwrappers/util/CWrapper.java 2006-06-12
02:03:33 UTC (rev 3006)
@@ -44,7 +44,8 @@
//void can only exist where a 0 makes a difference
public static final int VOID_KIND = 0;
- public static final String[] CTYPES = {"void", "int", "void *",
"float", "long long", "double"};
+ public static final String[] CTYPES = {"void", "int", "PointerObject
*", "float", "long long", "double"};
+ public static final String[] CARGTYPES = {"void", "int", "void *",
"float", "long long", "double"};
public void deserializeFromByteArray(byte[] serializedData);
}
Modified: freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
===================================================================
--- freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
2006-06-11 21:06:07 UTC (rev 3005)
+++ freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
2006-06-12 02:03:33 UTC (rev 3006)
@@ -37,6 +37,7 @@
import java.io.BufferedInputStream;
import org.gnu.freeway.support.javaparser.ParseException;
import org.gnu.freeway.support.javaparser.visitors.DepthFirstVisitor;
+import org.gnu.freeway.server.CPluginLoader;
/**
* @file SwitchTableGenerator.java
@@ -91,7 +92,7 @@
break;
//use defaults
if(clsPrefix.length() == 0)
- clsPrefix.append("build");
+ clsPrefix.append("build" + File.separator + "classes");
if(srcPrefix.length() == 0)
srcPrefix.append("src");
if(natPrefix.length() == 0)
@@ -102,7 +103,7 @@
System.err.println("a source code generator for
Freeway");
System.err.println();
System.err.println("usage: SwitchTableGenerator [-c
<directory>] [-s <directory>] [-n <directory>]");
- System.err.println(" -c path to class files
(default: build)");
+ System.err.println(" -c path to class files
(default: build" + File.separator + "classes)");
System.err.println(" -s path to java source files
(default: src)");
System.err.println(" -n path to c source files
(default: native)");
return;
@@ -528,7 +529,7 @@
return; //can't have a void argument
if(maxA - a > 0)
typedef.append(", ");
- typedef.append(CWrapper.CTYPES[b] + " arg" + (maxA -
a));
+ typedef.append(CWrapper.CARGTYPES[b] + " arg" + (maxA -
a));
functionType -= b * Math.pow(CWrapper.MAX_KIND, a--);
}
writer.write(typedef.toString() + ");\n");
@@ -579,6 +580,10 @@
methodList.put(methods[i].getName(), buffer.toString());
}
+ //put these here since they are only used once
+ String nativeServiceString =
cleanClassName("org.gnu.freeway.util.NativeService", imports);
+ String serviceString =
cleanClassName("org.gnu.freeway.util.Service", imports);
+
writer.write("// This class was autogenerated by
SwitchTableGenerator\n");
writer.write("package org.gnu.freeway.services.impl;\n");
writer.write("\n");
@@ -586,31 +591,17 @@
for(Iterator i = importSet.iterator(); i.hasNext(); )
writer.write("import " + (String) i.next() + ";\n");
writer.write("\n");
- writer.write("public class " + stripPackage(c.getName()) + "
implements " + c.getName() + " {\n");
- writer.write(" private CPluginLoader loader;\n");
- writer.write(" private CPluginLoader.Handle handle;\n");
+ writer.write("public class " + stripPackage(c.getName()) + "
extends " + nativeServiceString + " implements " + serviceString + ", " +
c.getName() + " {\n");
writer.write("\n");
int ic = 0;
for(Iterator i = order.iterator(); i.hasNext(); )
writer.write(((String)
methodList.get(i.next())).replace("__FUNCTIONINDEX__", Integer.toString(ic++))
+ "\n\n");
- writer.write(" public " + stripPackage(c.getName()) +
"(CPluginLoader loader) {\n");
- writer.write(" this.loader = loader;\n");
- writer.write(" handle = loader.loadService(\"" +
classToLibraryName(c.getName()) + "\");\n");
+ writer.write(" public " + stripPackage(c.getName()) + "()
{\n");
+ writer.write(" super();\n");
writer.write(" }\n");
- writer.write("\n");
- writer.write(" protected void finalize() {\n");
- writer.write(" loader.unloadService(handle);\n");
- writer.write(" }\n");
writer.write("}\n");
}
- public static String classToLibraryName(String className) {
- className = stripPackage(className);
- if(className.endsWith("Service"))
- className = className.substring(0, className.length() -
"Service".length());
- return "module_" + className.toLowerCase();
- }
-
public static String cleanClassName(String input, HashMap importMap) {
int lastDot = input.lastIndexOf(".");
if(lastDot <= 1)
Modified: freeway/src/org/gnu/freeway/server/CPluginLoader.java
===================================================================
--- freeway/src/org/gnu/freeway/server/CPluginLoader.java 2006-06-11
21:06:07 UTC (rev 3005)
+++ freeway/src/org/gnu/freeway/server/CPluginLoader.java 2006-06-12
02:03:33 UTC (rev 3006)
@@ -140,12 +140,19 @@
assert libhandle != null;
cUnloadDynamicLibrary(libhandle._);
}
-
+
/**
- * @file CLibraryHandle.java
- * @brief
- * @author mdonoughe
+ * Converts a class name to a module name. StatsService -> module_stats
+ * @param className
+ * @return
*/
+ public static String classToLibraryName(String className) {
+ if(className.endsWith("Service"))
+ className = className.substring(0, className.length() -
"Service".length());
+ return "module_" + className.toLowerCase();
+ }
+
+
public static final class Handle {
final long _;
Modified: freeway/src/org/gnu/freeway/services/impl/StatsService.java
===================================================================
--- freeway/src/org/gnu/freeway/services/impl/StatsService.java 2006-06-11
21:06:07 UTC (rev 3005)
+++ freeway/src/org/gnu/freeway/services/impl/StatsService.java 2006-06-12
02:03:33 UTC (rev 3006)
@@ -1,6 +1,8 @@
// This class was autogenerated by SwitchTableGenerator
package org.gnu.freeway.services.impl;
+import org.gnu.freeway.util.Service;
+import org.gnu.freeway.util.NativeService;
import org.gnu.freeway.cwrappers.CInt;
import org.gnu.freeway.cwrappers.ConstCLong;
import org.gnu.freeway.cwrappers.CLong;
@@ -8,9 +10,7 @@
import org.gnu.freeway.cwrappers.ConstCString;
import org.gnu.freeway.server.CPluginLoader;
-public class StatsService implements org.gnu.freeway.services.StatsService {
- private CPluginLoader loader;
- private CPluginLoader.Handle handle;
+public class StatsService extends NativeService implements Service,
org.gnu.freeway.services.StatsService {
public CInt create(ConstCString arg0) {
return (CInt) loader.callC(handle, 0, 13, new Object[] {arg0});
@@ -28,12 +28,7 @@
loader.callC(handle, 3, 42, new Object[] {arg0, arg1});
}
- public StatsService(CPluginLoader loader) {
- this.loader = loader;
- handle = loader.loadService("module_stats");
+ public StatsService() {
+ super();
}
-
- protected void finalize() {
- loader.unloadService(handle);
- }
}
Modified: freeway/src/org/gnu/freeway/util/AbstractService.java
===================================================================
--- freeway/src/org/gnu/freeway/util/AbstractService.java 2006-06-11
21:06:07 UTC (rev 3005)
+++ freeway/src/org/gnu/freeway/util/AbstractService.java 2006-06-12
02:03:33 UTC (rev 3006)
@@ -27,6 +27,18 @@
name=str;
state=0;
}
+
+ /**
+ * This is for NativeService. calling super(this.getName())
+ * is not allowed.
+ */
+ protected AbstractService()
+ {
+ super(true);
+ manager=null;
+ name=this.getName();
+ state=0;
+ }
public String toString()
{
Added: freeway/src/org/gnu/freeway/util/NativeService.java
===================================================================
--- freeway/src/org/gnu/freeway/util/NativeService.java 2006-06-11 21:06:07 UTC
(rev 3005)
+++ freeway/src/org/gnu/freeway/util/NativeService.java 2006-06-12 02:03:33 UTC
(rev 3006)
@@ -0,0 +1,96 @@
+ /*
+ This file is part of Freeway
+
+ Freeway is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ Freeway is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Freeway; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+package org.gnu.freeway.util;
+
+import org.gnu.freeway.server.CPluginLoader;
+
+/**
+ * @file NativeService.java
+ * @brief an abstract class to make org.gnu.freeway.services types fit
+ * @author mdonoughe
+ */
+public abstract class NativeService extends AbstractService implements Service
{
+
+ protected CPluginLoader loader;
+ protected CPluginLoader.Handle handle;
+
+ protected NativeService() {
+ super();
+ setDebug(true);
+ loader = new CPluginLoader();
+ }
+
+ protected void finalize() throws Throwable {
+ super.finalize();
+ done();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#getName()
+ */
+ public String getName() {
+ return this.getClass().getSimpleName();
+ }
+
+ /* (non-Javadoc)
+ * @see
org.gnu.freeway.util.Service#attach(org.gnu.freeway.util.ServiceManager)
+ */
+ public void attach(ServiceManager s) {
+ super.attach(s);
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#detach()
+ */
+ public void detach() {
+ super.detach();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#init()
+ */
+ public void init() throws ServiceException {
+ super.init();
+ handle =
loader.loadService(CPluginLoader.classToLibraryName(getName()));
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#start()
+ */
+ public void start() throws ServiceException {
+ super.start();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#stop()
+ */
+ public void stop() throws ServiceException {
+ super.stop();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gnu.freeway.util.Service#done()
+ */
+ public void done() throws ServiceException {
+ super.done();
+ loader.unloadService(handle);
+ }
+
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3006 - in freeway/src/org/gnu/freeway: . cwrappers/util server services/impl util,
mdonoughe <=