gnunet-svn
[Top][All Lists]
Advanced

[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);
+       }
+
+}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]