use of org.janusgraph.graphdb.database.serialize.DataOutput in project janusgraph by JanusGraph.
the class IndexSerializer method getIndexEntry.
private Entry getIndexEntry(CompositeIndexType index, RecordEntry[] record, JanusGraphElement element) {
final DataOutput out = serializer.getDataOutput(1 + 8 + 8 * record.length + 4 * 8);
out.putByte(FIRST_INDEX_COLUMN_BYTE);
if (index.getCardinality() != Cardinality.SINGLE) {
VariableLong.writePositive(out, element.longId());
if (index.getCardinality() != Cardinality.SET) {
for (final RecordEntry re : record) {
VariableLong.writePositive(out, re.relationId);
}
}
}
final int valuePosition = out.getPosition();
if (element instanceof JanusGraphVertex) {
VariableLong.writePositive(out, element.longId());
} else {
assert element instanceof JanusGraphRelation;
final RelationIdentifier rid = (RelationIdentifier) element.id();
final long[] longs = rid.getLongRepresentation();
Preconditions.checkArgument(longs.length == 3 || longs.length == 4);
for (final long aLong : longs) VariableLong.writePositive(out, aLong);
}
return new StaticArrayEntry(out.getStaticBuffer(), valuePosition);
}
use of org.janusgraph.graphdb.database.serialize.DataOutput in project janusgraph by JanusGraph.
the class TransactionLogHeader method serializePrimary.
public StaticBuffer serializePrimary(Serializer serializer, LogTxStatus status) {
Preconditions.checkArgument(status == LogTxStatus.PRIMARY_SUCCESS || status == LogTxStatus.COMPLETE_SUCCESS);
final DataOutput out = serializeHeader(serializer, status);
return out.getStaticBuffer();
}
use of org.janusgraph.graphdb.database.serialize.DataOutput in project janusgraph by JanusGraph.
the class TransactionLogHeader method serializeModifications.
public StaticBuffer serializeModifications(Serializer serializer, LogTxStatus status, StandardJanusGraphTx tx, final Collection<InternalRelation> addedRelations, final Collection<InternalRelation> deletedRelations) {
Preconditions.checkArgument(status == LogTxStatus.PRECOMMIT || status == LogTxStatus.USER_LOG);
DataOutput out = serializeHeader(serializer, 256 + (addedRelations.size() + deletedRelations.size()) * 40, status, status == LogTxStatus.PRECOMMIT ? tx.getConfiguration() : null);
logRelations(out, addedRelations, tx);
logRelations(out, deletedRelations, tx);
return out.getStaticBuffer();
}
use of org.janusgraph.graphdb.database.serialize.DataOutput in project janusgraph by JanusGraph.
the class TransactionLogHeader method serializeSecondary.
public StaticBuffer serializeSecondary(Serializer serializer, LogTxStatus status, Map<String, Throwable> indexFailures, boolean userLogSuccess) {
Preconditions.checkArgument(status == LogTxStatus.SECONDARY_SUCCESS || status == LogTxStatus.SECONDARY_FAILURE);
final DataOutput out = serializeHeader(serializer, status);
if (status == LogTxStatus.SECONDARY_FAILURE) {
out.putBoolean(userLogSuccess);
out.putInt(indexFailures.size());
for (String index : indexFailures.keySet()) {
assert StringUtils.isNotBlank(index);
out.writeObjectNotNull(index);
}
} else
assert userLogSuccess && indexFailures.isEmpty();
return out.getStaticBuffer();
}
use of org.janusgraph.graphdb.database.serialize.DataOutput in project janusgraph by JanusGraph.
the class TransactionLogHeader method serializeUserLog.
public StaticBuffer serializeUserLog(Serializer serializer, Entry sourceTxEntry, StandardTransactionId sourceTxId) {
Preconditions.checkArgument(sourceTxEntry != null && sourceTxEntry.status == LogTxStatus.PRECOMMIT && sourceTxEntry.header.transactionId == sourceTxId.getTransactionId());
StaticBuffer sourceContent = sourceTxEntry.content;
Preconditions.checkArgument(sourceContent != null && sourceContent.length() > 0);
final EnumMap<LogTxMeta, Object> meta = new EnumMap<>(LogTxMeta.class);
meta.put(LogTxMeta.SOURCE_TRANSACTION, sourceTxId);
DataOutput out = serializeHeader(serializer, 50 + sourceContent.length(), LogTxStatus.USER_LOG, meta);
out.putBytes(sourceContent);
return out.getStaticBuffer();
}
Aggregations