Package freenet.clients.fcp

Source Code of freenet.clients.fcp.SendBookmarkMessage

package freenet.clients.fcp;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;

import freenet.keys.FreenetURI;
import freenet.node.DarknetPeerNode;
import freenet.support.SimpleFieldSet;
import freenet.support.io.BucketTools;

public class SendBookmarkMessage extends SendPeerMessage {

  public final static String NAME = "SendBookmark";
  private final FreenetURI uri;
  private final String name;
  private final boolean hasAnAnActiveLink;

  public SendBookmarkMessage(SimpleFieldSet fs)
      throws MessageInvalidException {
    super(fs);
    try {
      name = fs.get("Name");
      if (name == null)
        throw new MessageInvalidException(
            ProtocolErrorMessage.MISSING_FIELD, "No name",
            identifier, false);
      uri = new FreenetURI(fs.get("URI"));
      hasAnAnActiveLink = fs.getBoolean("HasAnActivelink", false);
    } catch (MalformedURLException e) {
      throw new MessageInvalidException(
          ProtocolErrorMessage.FREENET_URI_PARSE_ERROR, e
              .getMessage(), identifier, false);
    }
  }

  @Override
  public SimpleFieldSet getFieldSet() {
    SimpleFieldSet fs = super.getFieldSet();
    fs.putSingle("Name", name);
    fs.putSingle("URI", uri.toString());
    fs.put("HasAnActivelink", hasAnAnActiveLink);
    return fs;
  }

  @Override
  public String getName() {
    return NAME;
  }

  @Override
  protected int handleFeed(DarknetPeerNode pn) throws MessageInvalidException {
    try {
      if(dataLength() > 0) {
        byte[] description = BucketTools.toByteArray(bucket);
        return pn.sendBookmarkFeed(uri, name, new String(description, "UTF-8"), hasAnAnActiveLink);
      }
      else
        return pn.sendBookmarkFeed(uri, name, null, hasAnAnActiveLink);
       
    } catch (UnsupportedEncodingException e) {
      throw new Error("Impossible: JVM doesn't support UTF-8: " + e, e);
    } catch (IOException e) {
      throw new MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "", null, false);
    }
  }

}
TOP

Related Classes of freenet.clients.fcp.SendBookmarkMessage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.