Why not keep the <class name>.<command name> syntax?

On Monday 19 November 2007 21:46, you wrote:
> Author: saces
> Date: 2007-11-19 21:46:50 +0000 (Mon, 19 Nov 2007)
> New Revision: 15857
> 
> Added:
>    trunk/freenet/src/freenet/node/fcp/FCPPluginMessage.java
>    trunk/freenet/src/freenet/node/fcp/FCPPluginReply.java
>    trunk/freenet/src/freenet/pluginmanager/FCPPluginOutputWrapper.java
> Log:
> new file for the rewritten fcp plugin interface
> 
> Added: trunk/freenet/src/freenet/node/fcp/FCPPluginMessage.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/fcp/FCPPluginMessage.java                  
>         
(rev 0)
> +++ trunk/freenet/src/freenet/node/fcp/FCPPluginMessage.java  2007-11-19 
21:46:50 UTC (rev 15857)
> @@ -0,0 +1,120 @@
> +/* This code is part of Freenet. It is distributed under the GNU General
> + * Public License, version 2 (or at your option any later version). See
> + * http://www.gnu.org/ for further details of the GPL. */
> +package freenet.node.fcp;
> +
> +import freenet.node.Node;
> +import freenet.pluginmanager.FCPPluginOutputWrapper;
> +import freenet.pluginmanager.FredPluginFCP;
> +import freenet.support.Logger;
> +import freenet.support.SimpleFieldSet;
> +import freenet.support.api.Bucket;
> +
> +/**
> + * @author saces
> + * 
> + * FCPPluginMessage
> + * Identifer=me
> + * PluginName=plugins.HelloFCP (or plugins.HelloFCP.HelloFCP?)
> + * Param.Itemname1=value1
> + * Param.Itemname2=value2
> + * ...
> + * 
> + * EndMessage
> + *    or
> + * DataLength=datasize
> + * Data
> + * <datasize> bytes of data
> + * 
> + */
> +public class FCPPluginMessage extends DataCarryingMessage {
> +     
> +     public static final String NAME = "FCPPluginMessage";
> +     
> +     public static final String PARAM_PREFIX = "Param";
> +     
> +     private final String identifier;
> +     private final String pluginname;
> +     
> +     private final long dataLength;
> +     
> +     private final SimpleFieldSet plugparams;
> +     
> +     FCPPluginMessage(SimpleFieldSet fs) throws MessageInvalidException {
> +             identifier = fs.get("Identifier");
> +             if(identifier == null)
> +                     throw new 
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "FCPPluginMessage 
must contain a Identifier field", null, false);
> +             pluginname = fs.get("PluginName");
> +             if(pluginname == null)
> +                     throw new 
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "FCPPluginMessage 
must contain a PluginName field", null, false);
> +             
> +             boolean havedata = "Data".equals(fs.getEndMarker());
> +             
> +             String dataLengthString = fs.get("DataLength");
> +             
> +             if(!havedata && (dataLengthString != null))
> +                     throw new 
> MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, "A 
nondata message can't have a DataLength field", identifier, false);
> +
> +             if(havedata) {
> +                     if (dataLengthString == null)
> +                             throw new 
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "Need DataLength 
on a Datamessage", identifier, false);
> +             
> +                     try {
> +                             dataLength = Long.parseLong(dataLengthString, 
> 10);
> +                     } catch (NumberFormatException e) {
> +                             throw new 
MessageInvalidException(ProtocolErrorMessage.ERROR_PARSING_NUMBER, "Error 
parsing DataLength field: "+e.getMessage(), identifier, false);
> +                     }
> +             } else {
> +                     dataLength = -1;
> +             }
> +             
> +             plugparams = fs.subset(PARAM_PREFIX);
> +     }
> +
> +     String getIdentifier() {
> +             return identifier;
> +     }
> +
> +     boolean isGlobal() {
> +             return false;
> +     }
> +
> +     long dataLength() {
> +             return dataLength;
> +     }
> +
> +     public SimpleFieldSet getFieldSet() {
> +             return null;
> +     }
> +
> +     public String getName() {
> +             return NAME;
> +     }
> +
> +     public void run(final FCPConnectionHandler handler, final Node node) 
throws MessageInvalidException {
> +
> +             final Bucket data2 = this.bucket;
> +             final FCPPluginOutputWrapper replysender = new 
FCPPluginOutputWrapper(handler, pluginname, identifier);
> +             node.executor.execute(new Runnable() {
> +
> +                     public void run() {
> +                             Logger.normal(this, "Searching fcp plugin: " + 
> pluginname);
> +                             FredPluginFCP plug = 
> node.pluginManager.getFCPPlugin(pluginname);
> +                             if (plug == null) {
> +                                     Logger.error(this, "Could not find fcp 
> plugin: " + pluginname);
> +                                     return;
> +                             }
> +                             Logger.normal(this, "Found fcp plugin: " + 
> pluginname);
> +                             
> +                             try {
> +                                     plug.handle(replysender, plugparams, 
> data2, handler.hasFullAccess());
> +                             } catch (Throwable t) {
> +                                     Logger.error(this, "Cought error while 
> execute fcp plugin handler" + 
t.getMessage(), t);
> +                             }
> +                     
> +                     }
> +             }, "FCPPlugin runner for " + pluginname);
> +
> +     }
> +
> +}
> 
> Added: trunk/freenet/src/freenet/node/fcp/FCPPluginReply.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/fcp/FCPPluginReply.java                    
>         
(rev 0)
> +++ trunk/freenet/src/freenet/node/fcp/FCPPluginReply.java    2007-11-19 
21:46:50 UTC (rev 15857)
> @@ -0,0 +1,64 @@
> +/* This code is part of Freenet. It is distributed under the GNU General
> + * Public License, version 2 (or at your option any later version). See
> + * http://www.gnu.org/ for further details of the GPL. */
> +package freenet.node.fcp;
> +
> +import freenet.node.Node;
> +import freenet.support.SimpleFieldSet;
> +
> +/**
> + * @author saces
> + *
> + */
> +public class FCPPluginReply extends DataCarryingMessage {
> +     
> +     private static final String NAME = "FCPPluginReply";
> +     
> +     public static final String PARAM_PREFIX = "Param";
> +     
> +     private final String plugname;
> +     private final String identifier;
> +     private final SimpleFieldSet plugparams;
> +     
> +     public FCPPluginReply(String pluginname, String identifier2, 
SimpleFieldSet fs) {
> +             plugname = pluginname;
> +             identifier = identifier2;
> +             plugparams = fs;
> +     }
> +
> +     String getIdentifier() {
> +             return identifier;
> +     }
> +
> +     boolean isGlobal() {
> +             return false;
> +     }
> +
> +     long dataLength() {
> +             return -1;
> +     }
> +     
> +     String getEndString() {
> +             if (dataLength() > 0)
> +                     return "Data";
> +             else
> +                     return "EndMessage";
> +     }
> +
> +     public SimpleFieldSet getFieldSet() {
> +             SimpleFieldSet sfs = new SimpleFieldSet(true);
> +             sfs.putSingle("PluginName", plugname);
> +             sfs.putSingle("Identifier", identifier);
> +             sfs.put("Replies", plugparams);
> +             return sfs;
> +     }
> +
> +     public String getName() {
> +             return NAME;
> +     }
> +
> +     public void run(FCPConnectionHandler handler, Node node) throws 
MessageInvalidException {
> +             throw new 
> MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, 
NAME + " goes from server to client not the other way around", null, false);
> +     }
> +
> +}
> 
> Added: trunk/freenet/src/freenet/pluginmanager/FCPPluginOutputWrapper.java
> ===================================================================
> --- trunk/freenet/src/freenet/pluginmanager/FCPPluginOutputWrapper.java       
>                         
(rev 0)
> +++ trunk/freenet/src/freenet/pluginmanager/FCPPluginOutputWrapper.java       
2007-11-19 21:46:50 UTC (rev 15857)
> @@ -0,0 +1,43 @@
> +/* This code is part of Freenet. It is distributed under the GNU General
> + * Public License, version 2 (or at your option any later version). See
> + * http://www.gnu.org/ for further details of the GPL. */
> +package freenet.pluginmanager;
> +
> +import freenet.node.fcp.FCPConnectionHandler;
> +import freenet.node.fcp.FCPPluginReply;
> +import freenet.support.SimpleFieldSet;
> +import freenet.support.api.Bucket;
> +
> +/**
> + * @author saces
> + *
> + */
> +public class FCPPluginOutputWrapper {
> +     
> +     private final String identifier;
> +     private final String plugname;
> +     private final FCPConnectionHandler handler;
> +     
> +
> +     public FCPPluginOutputWrapper(FCPConnectionHandler handler2, String 
pluginname, String identifier2) {
> +             identifier = identifier2;
> +             plugname = pluginname;
> +             handler = handler2;
> +     }
> +     
> +     public void send(SimpleFieldSet params) {
> +             FCPPluginReply reply = new FCPPluginReply(plugname, identifier, 
> params);
> +             handler.outputHandler.queue(reply);
> +     }
> +     
> +     public void send(SimpleFieldSet params, byte[] data) {
> +             FCPPluginReply reply = new FCPPluginReply(plugname, identifier, 
> params);
> +             handler.outputHandler.queue(reply);
> +     }
> +     
> +     public void send(SimpleFieldSet params, Bucket data) {
> +             FCPPluginReply reply = new FCPPluginReply(plugname, identifier, 
> params);
> +             handler.outputHandler.queue(reply);
> +     }
> +
> +}
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20071119/5cc4063b/attachment.pgp>

Reply via email to