blob: 868f51d0ce28fa039535b96928383bb94483dd96 [file] [log] [blame]
package accord.maelstrom;
import java.util.Map;
import accord.local.Node;
import accord.local.Node.Id;
import accord.api.Data;
import accord.api.Key;
import accord.api.Query;
import accord.api.Result;
import accord.txn.Keys;
public class MaelstromQuery implements Query
{
final Node.Id client;
final long requestId;
final Keys read;
final MaelstromUpdate update; // we have to return the writes as well for some reason
public MaelstromQuery(Id client, long requestId, Keys read, MaelstromUpdate update)
{
this.client = client;
this.requestId = requestId;
this.read = read;
this.update = update;
}
@Override
public Result compute(Data data)
{
Value[] values = new Value[read.size()];
for (Map.Entry<Key, Value> e : ((MaelstromData)data).entrySet())
values[read.indexOf(e.getKey())] = e.getValue();
return new MaelstromResult(client, requestId, read, values, update);
}
}