} else { if (retval.cached) { prev = val.getCurr(); } else { prev = val.get(_currTx); OpaqueValue<T> newOpaqueVal; if (val == null) { newOpaqueVal = new OpaqueValue<T>(_currTx, newVal); } else { newOpaqueVal = val.update(_currTx, newVal);
public OpaqueValue<T> update(Long batchTxid, T newVal) { T prev; if (batchTxid == null || (this.currTxid < batchTxid)) { prev = this.curr; } else if (batchTxid.equals(this.currTxid)) { prev = this.prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } return new OpaqueValue<T>(batchTxid, newVal, prev); }
@Override public Values toValues(T value) { if (value == null) { return null; } switch (stateType) { case NON_TRANSACTIONAL: return new Values(value); case TRANSACTIONAL: TransactionalValue transactional = (TransactionalValue) value; return new Values(transactional.getTxid(), transactional.getVal()); case OPAQUE: OpaqueValue opaque = (OpaqueValue) value; return new Values(opaque.getCurrTxid(), opaque.getCurr(), opaque.getPrev()); default: throw new IllegalStateException("Unknown state type " + stateType); } }
@Override public List<T> multiGet(List<List<Object>> keys) { List<CachedBatchReadsMap.RetVal<OpaqueValue>> curr = _backing.multiGet(keys); List<T> ret = new ArrayList<T>(curr.size()); for (CachedBatchReadsMap.RetVal<OpaqueValue> retval : curr) { OpaqueValue val = retval.val; if (val != null) { if (retval.cached) { ret.add((T) val.getCurr()); } else { ret.add((T) val.get(_currTx)); } } else { ret.add(null); } } return ret; }
public List<Object> next() { Map.Entry<List<Object>, T> e = it.next(); List<Object> ret = new ArrayList<Object>(); ret.addAll(e.getKey()); ret.add(((OpaqueValue) e.getValue()).getCurr()); return ret; }
@Override public OpaqueValue deserialize(byte[] b) { try { String s = new String(b, "UTF-8"); List deser = (List) JSONValue.parseWithException(s); return new OpaqueValue((Long) deser.get(0), deser.get(1), deser.get(2)); } catch (UnsupportedEncodingException | ParseException e) { throw new RuntimeException(e); } }
public T get(Long batchTxid) { if (batchTxid == null || (this.currTxid < batchTxid)) { return curr; } else if (batchTxid.equals(this.currTxid)) { return prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } }
@Override public List<T> multiGet(List<List<Object>> keys) { List<CachedBatchReadsMap.RetVal<OpaqueValue>> curr = _backing.multiGet(keys); List<T> ret = new ArrayList<T>(curr.size()); for(CachedBatchReadsMap.RetVal<OpaqueValue> retval: curr) { OpaqueValue val = retval.val; if(val!=null) { if(retval.cached) { ret.add((T) val.getCurr()); } else { ret.add((T) val.get(_currTx)); } } else { ret.add(null); } } return ret; }
public List<Object> next() { Map.Entry<List<Object>, T> e = it.next(); List<Object> ret = new ArrayList<Object>(); ret.addAll(e.getKey()); ret.add(((OpaqueValue) e.getValue()).getCurr()); return ret; }
@Override @SuppressWarnings("unchecked") public T fromValues(List<Values> valuesSet) { if (valuesSet == null || valuesSet.size() == 0) { return null; } else if (valuesSet.size() == 1) { Values values = valuesSet.get(0); if (values == null) { return null; } switch (stateType) { case NON_TRANSACTIONAL: return (T) values.get(0); case TRANSACTIONAL: return (T) new TransactionalValue((Long) values.get(0), values.get(1)); case OPAQUE: return (T) new OpaqueValue((Long) values.get(0), values.get(1), values.get(2)); default: throw new IllegalStateException("Unknown state type " + stateType); } } throw new IllegalStateException("State query returned multiple results."); }
public T get(Long batchTxid) { if(batchTxid==null || (this.currTxid < batchTxid)) { return curr; } else if(batchTxid.equals(this.currTxid)){ return prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } }
} else { if(retval.cached) { prev = val.getCurr(); } else { prev = val.get(_currTx); OpaqueValue<T> newOpaqueVal; if(val==null) { newOpaqueVal = new OpaqueValue<T>(_currTx, newVal); } else { newOpaqueVal = val.update(_currTx, newVal);
public OpaqueValue<T> update(Long batchTxid, T newVal) { T prev; if(batchTxid==null || (this.currTxid < batchTxid)) { prev = this.curr; } else if(batchTxid.equals(this.currTxid)){ prev = this.prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } return new OpaqueValue<T>(batchTxid, newVal, prev); }
@Override public Values toValues(OpaqueValue<ITuple> tuple) { Values values = new Values(); values.add(tuple.getCurrTxid()); for (String valueField : tupleFields) { if (tuple.getCurr() != null) { values.add(tuple.getCurr().getValueByField(valueField)); } else { values.add(null); } } for (String valueField : tupleFields) { if (tuple.getPrev() != null) { values.add(tuple.getPrev().getValueByField(valueField)); } else { values.add(null); } } return values; }
public List<Object> next() { Map.Entry<List<Object>, T> e = it.next(); List<Object> ret = new ArrayList<Object>(); ret.addAll(e.getKey()); ret.add(((OpaqueValue)e.getValue()).getCurr()); return ret; }
@Override public OpaqueValue<ITuple> fromValues(List<Values> valuesList) { if (valuesList == null || valuesList.size() == 0) { return null; } Values values = valuesList.get(0); int index = 0; Long currTx = (Long) values.get(index++); SimpleTuple curr = new SimpleTuple(tupleFields); for (String valueField : tupleFields) { curr.put(valueField, values.get(index++)); } if (isAllNull(curr)) { curr = null; } SimpleTuple prev = new SimpleTuple(tupleFields); for (String valueField : tupleFields) { prev.put(valueField, values.get(index++)); } if (isAllNull(prev)) { prev = null; } return new OpaqueValue<ITuple>(currTx, curr, prev); }
public List<Object> next() { Map.Entry<List<Object>, T> e = it.next(); List<Object> ret = new ArrayList<Object>(); ret.addAll(e.getKey()); ret.add(((OpaqueValue)e.getValue()).getCurr()); return ret; }
@Override public OpaqueValue deserialize(byte[] b) { try { String s = new String(b, "UTF-8"); List deser = (List) JSONValue.parseWithException(s); return new OpaqueValue((Long) deser.get(0), deser.get(1), deser.get(2)); } catch (UnsupportedEncodingException | ParseException e) { throw new RuntimeException(e); } }