package lobstack;
import java.util.Map;
import java.util.TreeMap;
import jelectrum.SimpleFuture;
import java.nio.ByteBuffer;
import org.junit.Assert;
public class WorkUnit
{
public String mode;
public WorkUnit(Lobstack stack, NodeEntry ne, TreeMap<Long, ByteBuffer> save_entries)
{
this.mode = "PUT";
this.stack = stack;
this.ne = ne;
this.save_entries = save_entries;
}
public WorkUnit(Lobstack stack, String prefix, TreeMap<Long, ByteBuffer> save_entries)
{
this.mode = "PUT";
this.stack = stack;
this.ne = new NodeEntry();
this.node = new LobstackNode(prefix);
this.ne.node = true;
this.save_entries = save_entries;
}
public WorkUnit(Lobstack stack, LobstackNode node, int min_file, TreeMap<Long, ByteBuffer> save_entries)
{
this.mode = "REPOSITION";
this.stack = stack;
this.node = node;
this.min_file = min_file;
this.save_entries = save_entries;
}
public WorkUnit(Lobstack stack, LobstackNode node, int max_file)
{
this.mode = "ESTIMATE_REPOSITION";
this.stack = stack;
this.node = node;
this.max_file = max_file;
}
public Lobstack stack;
public LobstackNode node;
public TreeMap<Long, ByteBuffer> save_entries;
public Map<String, NodeEntry> put_map=new TreeMap<String, NodeEntry>();
public SimpleFuture<NodeEntry> return_entry=new SimpleFuture<NodeEntry>();
public NodeEntry ne;
//For reposition
public int min_file;
public int max_file;
public SimpleFuture<TreeMap<Integer, Long>> estimate=new SimpleFuture<>();
public void assertConsistentForPut()
{
if (!ne.node) Assert.assertEquals("Non node, put map should be empty",0,put_map.size());
if (node==null) Assert.assertTrue("Don't have a node, we must have a loaction", ne.location >= 0);
for(NodeEntry ne : put_map.values())
{
if (ne.node)
{
Assert.assertTrue("Only existing nodes added to a node", ne.location>=0);
}
//Assert.assertFalse("Should not add nodes to node", ne.node);
}
}
}