Author: toad
Date: 2006-02-18 22:47:36 +0000 (Sat, 18 Feb 2006)
New Revision: 8065
Modified:
branches/config/src/freenet/clients/http/FproxyToadlet.java
branches/config/src/freenet/node/CPUAdjustingSwapRequestInterval.java
branches/config/src/freenet/node/Node.java
branches/config/src/freenet/node/TestnetHandler.java
branches/config/src/freenet/store/BerkeleyDBFreenetStore.java
branches/config/src/freenet/support/FileLoggerHook.java
branches/config/src/freenet/support/Logger.java
branches/config/src/freenet/support/LoggerHook.java
branches/config/src/freenet/support/LoggerHookChain.java
Log:
It compiles. Except for some testing code which isn't used anyway.
Will fix that next week.
Modified: branches/config/src/freenet/clients/http/FproxyToadlet.java
===================================================================
--- branches/config/src/freenet/clients/http/FproxyToadlet.java 2006-02-18
22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/clients/http/FproxyToadlet.java 2006-02-18
22:47:36 UTC (rev 8065)
@@ -11,6 +11,7 @@
import freenet.client.HighLevelSimpleClient;
import freenet.config.BooleanCallback;
import freenet.config.Config;
+import freenet.config.IntCallback;
import freenet.config.InvalidConfigValueException;
import freenet.config.SubConfig;
import freenet.keys.FreenetURI;
@@ -74,41 +75,66 @@
final Node node;
+ FproxyEnabledCallback(Node n) {
+ this.node = n;
+ }
+
public boolean get() {
-
- // TODO Auto-generated method stub
- return false;
+ return node.getFproxy() != null;
}
public void set(boolean val) throws InvalidConfigValueException
{
- // TODO Auto-generated method stub
-
+ if(val == get()) return;
+ throw new InvalidConfigValueException("Cannot change
fproxy enabled/disabled after startup");
}
}
- public static void maybeCreateFproxyEtc(Node node, Config config) {
+ static final int DEFAULT_FPROXY_PORT = 8888;
+
+ static class FproxyPortCallback implements IntCallback {
+ final Node node;
+
+ FproxyPortCallback(Node n) {
+ this.node = n;
+ }
+
+ public int get() {
+ SimpleToadletServer f = node.getToadletContainer();
+ if(f == null) return DEFAULT_FPROXY_PORT;
+ return f.port;
+ }
+
+ public void set(int port) throws InvalidConfigValueException {
+ if(port != get())
+ throw new InvalidConfigValueException("Cannot
change fproxy port number on the fly");
+ }
+ }
+
+ public static void maybeCreateFproxyEtc(Node node, Config config)
throws IOException {
+
SubConfig fproxyConfig = new SubConfig("fproxy", config);
- fproxyConfig.register("enabled", true, 1, true, "Enable
fproxy?", "Whether to enable fproxy and related HTTP services",
- new BooleanCallback() {
- public boolean get() {
-
- // TODO Auto-generated method
stub
- return false;
- }
- public void set(boolean val) throws
InvalidConfigValueException {
- // TODO Auto-generated method
stub
-
- }
- });
+ fproxyConfig.register("enabled", true, 1, true, "Enable
fproxy?", "Whether to enable fproxy and related HTTP services",
+ new FproxyEnabledCallback(node));
- SimpleToadletServer server = new SimpleToadletServer(+2000);
- FproxyToadlet fproxy = new
FproxyToadlet(makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS));
+ boolean fproxyEnabled = fproxyConfig.getBoolean("enabled");
+
+ if(!fproxyEnabled) {
+ fproxyConfig.finishedInitialization();
+ return;
+ }
+
+ fproxyConfig.register("port", DEFAULT_FPROXY_PORT, 2, true,
"Fproxy port number", "Fproxy port number",
+ new FproxyPortCallback(node));
+
+ int port = fproxyConfig.getInt("port");
+
+ SimpleToadletServer server = new SimpleToadletServer(port);
+ node.setToadletContainer(server);
+ FproxyToadlet fproxy = new
FproxyToadlet(node.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS));
+ node.setFproxy(fproxy);
server.register(fproxy, "/", false);
- System.out.println("Starting fproxy on port "+(portNumber+2000));
-
- // TODO Auto-generated method stub
-
+ System.out.println("Starting fproxy on port "+(port));
}
Modified: branches/config/src/freenet/node/CPUAdjustingSwapRequestInterval.java
===================================================================
--- branches/config/src/freenet/node/CPUAdjustingSwapRequestInterval.java
2006-02-18 22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/node/CPUAdjustingSwapRequestInterval.java
2006-02-18 22:47:36 UTC (rev 8065)
@@ -27,8 +27,8 @@
t.start();
}
- public synchronized double getValue() {
- return currentValue;
+ public synchronized int getValue() {
+ return (int)currentValue;
}
public void run() {
Modified: branches/config/src/freenet/node/Node.java
===================================================================
--- branches/config/src/freenet/node/Node.java 2006-02-18 22:12:47 UTC (rev
8064)
+++ branches/config/src/freenet/node/Node.java 2006-02-18 22:47:36 UTC (rev
8065)
@@ -227,6 +227,7 @@
static final int EXIT_BAD_NODE_DIR = 15;
static final int EXIT_BAD_TEMP_DIR = 16;
static final int EXIT_COULD_NOT_START_FCP = 17;
+ static final int EXIT_COULD_NOT_START_FPROXY = 18;
public final long bootID;
@@ -244,6 +245,8 @@
public final ClientRequestScheduler putScheduler;
TextModeClientInterface tmci;
FCPServer fcpServer;
+ FproxyToadlet fproxyServlet;
+ SimpleToadletServer toadletContainer;
// Things that's needed to keep track of
public final PluginManager pluginManager;
@@ -827,7 +830,11 @@
// Fproxy
// FIXME this is a hack, the real way to do this is plugins
- SimpleToadletServer.maybeCreateFproxyEtc(this, config);
+ try {
+ FproxyToadlet.maybeCreateFproxyEtc(this, config);
+ } catch (IOException e) {
+ throw new
NodeInitException(EXIT_COULD_NOT_START_FPROXY, "Could not start fproxy: "+e);
+ }
// FCP
try {
@@ -838,16 +845,7 @@
// SNMP
SNMPStarter.maybeCreate(this, config);
-
- // FIXME old code to use above
-
- new FCPServer(portNumber+3000, this);
- System.out.println("Starting FCP server on port "+(portNumber+3000));
- SNMPAgent.setSNMPPort(portNumber+4000);
- System.out.println("Starting SNMP server on port "+(portNumber+4000));
- SNMPStarter.initialize();
-
// Start testnet handler
if(testnetHandler != null)
testnetHandler.start();
@@ -1289,7 +1287,7 @@
fs.put("testnet", Boolean.toString(testnetEnabled));
fs.put("lastGoodVersion", Version.getLastGoodVersionString());
if(testnetEnabled)
- fs.put("testnetPort", Integer.toString(testnetPort));
+ fs.put("testnetPort",
Integer.toString(testnetHandler.testnetPort));
fs.put("myName", myName);
Logger.minor(this, "My reference: "+fs);
return fs;
@@ -1894,4 +1892,20 @@
public FCPServer getFCPServer() {
return fcpServer;
}
+
+ public void setToadletContainer(SimpleToadletServer server) {
+ toadletContainer = server;
+ }
+
+ public FproxyToadlet getFproxy() {
+ return fproxyServlet;
+ }
+
+ public SimpleToadletServer getToadletContainer() {
+ return toadletContainer;
+ }
+
+ public void setFproxy(FproxyToadlet fproxy) {
+ this.fproxyServlet = fproxy;
+ }
}
Modified: branches/config/src/freenet/node/TestnetHandler.java
===================================================================
--- branches/config/src/freenet/node/TestnetHandler.java 2006-02-18
22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/node/TestnetHandler.java 2006-02-18
22:47:36 UTC (rev 8065)
@@ -66,7 +66,7 @@
private final Node node;
private Thread serverThread;
- private final int testnetPort;
+ final int testnetPort;
public void run() {
// Set up server socket
Modified: branches/config/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- branches/config/src/freenet/store/BerkeleyDBFreenetStore.java
2006-02-18 22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/store/BerkeleyDBFreenetStore.java
2006-02-18 22:47:36 UTC (rev 8065)
@@ -54,7 +54,7 @@
private final TupleBinding longTupleBinding;
private long chkBlocksInStore;
- private final long maxChkBlocks;
+ private long maxChkBlocks;
private final Database chkDB;
private final Database chkDB_accessTime;
private final RandomAccessFile chkStore;
@@ -679,4 +679,8 @@
lastRecentlyUsed++;
return lastRecentlyUsed;
}
+
+ public void setMaxKeys(long maxStoreKeys) {
+ maxChkBlocks = maxStoreKeys;
+ }
}
\ No newline at end of file
Modified: branches/config/src/freenet/support/FileLoggerHook.java
===================================================================
--- branches/config/src/freenet/support/FileLoggerHook.java 2006-02-18
22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/support/FileLoggerHook.java 2006-02-18
22:47:36 UTC (rev 8065)
@@ -27,6 +27,7 @@
import java.util.zip.GZIPOutputStream;
import freenet.node.Version;
+import freenet.support.LoggerHook.InvalidThresholdException;
/**
* Converted the old StandardLogger to Ian's loggerhook interface.
@@ -568,7 +569,7 @@
boolean assumeWorking,
boolean logOverwrite,
long maxOldLogFilesDiskUsage)
- throws IOException {
+ throws IOException, InvalidThresholdException {
this(filename,
fmt,
dfmt,
@@ -604,7 +605,7 @@
OutputStream os,
String fmt,
String dfmt,
- String threshold) {
+ String threshold) throws InvalidThresholdException {
this(new PrintStream(os), fmt, dfmt,
priorityOf(threshold), true);
logStream = os;
}
@@ -673,7 +674,7 @@
String threshold,
boolean assumeWorking,
boolean logOverwrite,
- long maxOldLogFilesDiskUsage) throws IOException{
+ long maxOldLogFilesDiskUsage) throws IOException,
InvalidThresholdException{
this(rotate,baseFilename,fmt,dfmt,priorityOf(threshold),assumeWorking,logOverwrite,maxOldLogFilesDiskUsage);
}
Modified: branches/config/src/freenet/support/Logger.java
===================================================================
--- branches/config/src/freenet/support/Logger.java 2006-02-18 22:12:47 UTC
(rev 8064)
+++ branches/config/src/freenet/support/Logger.java 2006-02-18 22:47:36 UTC
(rev 8065)
@@ -1,5 +1,7 @@
package freenet.support;
+import freenet.support.LoggerHook.InvalidThresholdException;
+
/**
* @author Iakin
@@ -28,7 +30,7 @@
*/
static Logger logger = new VoidLogger();
- public static FileLoggerHook setupStdoutLogging(int level, String
detail) {
+ public static FileLoggerHook setupStdoutLogging(int level, String
detail) throws InvalidThresholdException {
setupChain();
logger.setThreshold(level);
logger.setDetailedThresholds(detail);
@@ -180,15 +182,16 @@
*
* @param symbolicThreshold
* The new threshhold, must be one of ERROR,NORMAL etc..
+ * @throws InvalidThresholdException
*/
- public abstract void setThreshold(String symbolicThreshold);
+ public abstract void setThreshold(String symbolicThreshold) throws
InvalidThresholdException;
/**
* @return The currently used logging threshold
*/
public abstract int getThreshold();
- public abstract void setDetailedThresholds(String details);
+ public abstract void setDetailedThresholds(String details) throws
InvalidThresholdException;
/**
* Report a fatal error and exit.
Modified: branches/config/src/freenet/support/LoggerHook.java
===================================================================
--- branches/config/src/freenet/support/LoggerHook.java 2006-02-18 22:12:47 UTC
(rev 8064)
+++ branches/config/src/freenet/support/LoggerHook.java 2006-02-18 22:47:36 UTC
(rev 8065)
@@ -20,7 +20,7 @@
this.threshold = thresh;
}
- LoggerHook(String thresh){
+ LoggerHook(String thresh) throws InvalidThresholdException{
this.threshold = priorityOf(thresh);
}
@@ -111,7 +111,7 @@
setThreshold(priorityOf(symbolicThreshold));
}
- public void setDetailedThresholds(String details) {
+ public void setDetailedThresholds(String details) throws
InvalidThresholdException {
if (details == null || details.length() == 0)
return;
StringTokenizer st = new StringTokenizer(details, ",", false);
Modified: branches/config/src/freenet/support/LoggerHookChain.java
===================================================================
--- branches/config/src/freenet/support/LoggerHookChain.java 2006-02-18
22:12:47 UTC (rev 8064)
+++ branches/config/src/freenet/support/LoggerHookChain.java 2006-02-18
22:47:36 UTC (rev 8065)
@@ -1,5 +1,7 @@
package freenet.support;
+import freenet.support.LoggerHook.InvalidThresholdException;
+
/**
* A class that takes logging messages and distributes them to LoggerHooks.
* It implements LoggerHook itself, so that instances can be chained (just
@@ -27,7 +29,7 @@
super(threshold);
hooks = new LoggerHook[0];
}
- public LoggerHookChain(String threshold) {
+ public LoggerHookChain(String threshold) throws InvalidThresholdException {
super(threshold);
hooks = new LoggerHook[0];
}
@@ -101,7 +103,7 @@
return ((2*ERROR)-1) & ~(threshold-1);
}
- public void setDetailedThresholds(String details) {
+ public void setDetailedThresholds(String details) throws
InvalidThresholdException {
super.setDetailedThresholds(details);
LoggerHook[] h = getHooks();
for (int i = 0; i < h.length; i++)