gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r2940 - in freeway/src/org/gnu/freeway: cwrappers/util serv


From: mdonoughe
Subject: [GNUnet-SVN] r2940 - in freeway/src/org/gnu/freeway: cwrappers/util services
Date: Mon, 29 May 2006 10:39:55 -0700 (PDT)

Author: mdonoughe
Date: 2006-05-29 10:39:53 -0700 (Mon, 29 May 2006)
New Revision: 2940

Modified:
   freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
   freeway/src/org/gnu/freeway/services/StatsService.java
Log:
added a missing function to StatsService
SwitchTableGenerator gernerates compiling Java classes


Modified: freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
===================================================================
--- freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java        
2006-05-29 03:53:10 UTC (rev 2939)
+++ freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java        
2006-05-29 17:39:53 UTC (rev 2940)
@@ -56,6 +56,7 @@
                        c = 
Class.forName("org.gnu.freeway.services.StatsService");
                } catch(ClassNotFoundException e) {
                        e.printStackTrace();
+                       return;
                }
                implementClass(c);
        }
@@ -67,40 +68,60 @@
                }
                System.err.println("Implementing " + c.getName());
                
-               //open file
-               //write class head
                HashMap imports = new HashMap();
-               //use some magic to include the yet-to-be-determined import 
statements here
+               cleanClassName("org.gnu.freeway.server.CPluginLoader", imports);
                
                Method[] methods = c.getMethods();
                ArrayList methodList = new ArrayList();
                
+               // write every method to the buffer
                for(int i = 0; i < methods.length; i++) {
-                       //write methods
                        StringBuffer buffer = new StringBuffer();
+                       StringBuffer arrayBuffer = new StringBuffer();
                        buffer.append("public " + 
cleanClassName(methods[i].getReturnType().getName(), imports) + " " + 
methods[i].getName() + "(");
                        Class[] argTypes = methods[i].getParameterTypes();
-                       for(int j = 0; j < argTypes.length; j++) {
-                               if(j > 0)
+                       int j;
+                       // add every argument to the arguments list and the 
Object[]
+                       for(j = 0; j < argTypes.length; j++) {
+                               if(j > 0) {
                                        buffer.append(", ");
-                               
buffer.append(cleanClassName(argTypes[j].getName(), imports) + " arg" + j);
+                                       arrayBuffer.append(", ");
+                               }
+                               String paramClassName = 
cleanClassName(argTypes[j].getName(), imports);
+                               String paramName = "arg" + j;
+                               buffer.append(paramClassName + " " + paramName);
+                               arrayBuffer.append(paramName);
                        }
                        buffer.append(") {\n");
-                       buffer.append("//TODO: write code that writes code 
here\n");
+                       if(!"void".equals(methods[i].getReturnType().getName()))
+                               buffer.append("return (" + 
cleanClassName(methods[i].getReturnType().getName(), imports) + ") ");
+                       buffer.append("loader.callC(handle, \"" + 
methods[i].getName() + "\", this, new Object[] {" + arrayBuffer + "});\n");
                        buffer.append("}");
                        methodList.add(buffer.toString());
                }
                
                System.out.println("// This class was autogenerated by 
SwitchTableGenerator");
-               System.out.println("pacakge org.gnu.freeway.services.impl;");
+               System.out.println("package org.gnu.freeway.services.impl;");
                System.out.println();
                Collection importSet = imports.values();
                for(Iterator i = importSet.iterator(); i.hasNext(); )
                        System.out.println("import " + (String) i.next() + ";");
                System.out.println();
                System.out.println("public class " + stripPackage(c.getName()) 
+ " implements " + c.getName() + " {");
+               System.out.println("private CPluginLoader loader;");
+               System.out.println("private CPluginLoader.Handle handle;");
+               System.out.println();
+               System.out.println("public " + stripPackage(c.getName()) + 
"(CPluginLoader loader) {");
+               System.out.println("this.loader = loader;");
+               System.out.println("handle = loader.loadService(\"" + 
stripPackage(c.getName()) + "\");");
+               System.out.println("}");
+               System.out.println();
+               System.out.println("protected void finalize() {");
+               System.out.println("loader.unloadService(handle);");
+               System.out.println("}");
+               System.out.println();
                for(Iterator i = methodList.iterator(); i.hasNext(); )
-                       System.out.println((String) i.next());
+                       System.out.println((String) i.next() + "\n");
                System.out.println("}");
        }
        
@@ -153,5 +174,4 @@
                        throw new Error(t);
                }
        }
-       
 }

Modified: freeway/src/org/gnu/freeway/services/StatsService.java
===================================================================
--- freeway/src/org/gnu/freeway/services/StatsService.java      2006-05-29 
03:53:10 UTC (rev 2939)
+++ freeway/src/org/gnu/freeway/services/StatsService.java      2006-05-29 
17:39:53 UTC (rev 2940)
@@ -33,4 +33,5 @@
        public CInt create(ConstCString name);
        public void set(ConstCInt handle, ConstCLong value);
        public CLong get(ConstCInt handle); //cannot return a constant type 
because those can't be deserialized
+       public void change(ConstCInt handle, ConstCInt delta);
 }





reply via email to

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