yacy_search_server/source/net/yacy/kelondro/util/BEncoder.java
orbiter 5a994c9796 added a scheduler based on API actions
- every process that is monitored with the API Steering interface can now be scheduled!
- added input methods in Steering interface to set a scheduling time
- added a view on the steering api that shows only crawl jobs inside the Crawl Profile servlet
- added a scheduling call process in the cleanup process handler that triggers the scheduled processes
This causes that the cleanup now also looks for scheduled processes. Such processes are therefore not executed at
the same time as given in the target execution time but they will be executed within the cleanup process time window.

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7050 6c8d7289-2bf4-0310-a012-ef5d649a1542
2010-08-19 12:13:54 +00:00

98 lines
3.3 KiB
Java

// BEncoder.java
// (C) 2010 by Michael Peter Christen; mc@yacy.net, Frankfurt a. M., Germany
// first published 12.01.2010 on http://yacy.net
//
// $LastChangedDate: 2008-03-14 01:16:04 +0100 (Fr, 14 Mrz 2008) $
// $LastChangedRevision: 6563 $
// $LastChangedBy: orbiter $
//
// LICENSE
//
// This program 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 of the License, or
// (at your option) any later version.
//
// This program 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 this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package net.yacy.kelondro.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.yacy.kelondro.util.BDecoder.BObject;
public class BEncoder {
// lists
public static List<BObject> transcode(List<byte[]> list) {
ArrayList<BObject> l = new ArrayList<BObject>(list.size());
for (byte[] entry: list) l.add(new BDecoder.BStringObject(entry));
return l;
}
public static byte[] encode(List<BObject> list) {
BDecoder.BListObject l = new BDecoder.BListObject(list);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
l.toStream(baos);
baos.close();
return baos.toByteArray();
} catch (IOException e) {
}
return null;
}
// maps
public static Map<String, BObject> transcode(Map<String, byte[]> map) {
Map<String, BObject> m = new HashMap<String, BObject>();
for (Map.Entry<String, byte[]> entry: map.entrySet()) m.put(entry.getKey(), new BDecoder.BStringObject(entry.getValue()));
return m;
}
public static byte[] encode(Map<String, BObject> map) {
BDecoder.BDictionaryObject dict = new BDecoder.BDictionaryObject(map);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
dict.toStream(baos);
baos.close();
return baos.toByteArray();
} catch (IOException e) {}
return null;
}
public static byte[] encodeMap(String key, byte[] value) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
BDecoder.BDictionaryObject.toStream(baos, key, value);
baos.close();
return baos.toByteArray();
} catch (IOException e) {}
return null;
}
public static void main(final String[] args) {
Map<String, byte[]> m = new HashMap<String, byte[]>();
m.put("k", "000".getBytes());
m.put("r", "111".getBytes());
m.put("s", "222".getBytes());
Map<String, BObject> t = transcode(m);
byte[] b = encode(t);
System.out.println(new String(b));
BDecoder d = new BDecoder(b);
BObject o = d.parse();
System.out.println(o.toString());
}
}