internal byte[] GetInternal(byte[] documentIdBytes, SharpDBTransaction transaction = null) { if (transaction != null) { Socket.SendMoreFrame(Protocol.TransactionGet).SendMoreFrame(transaction.TransactionIdBytes); } else { Socket.SendMoreFrame(Protocol.Get); } Socket.SendFrame(documentIdBytes); bool result = BitConverter.ToBoolean(Socket.ReceiveFrameBytes(), 0); if (result) { return(Socket.ReceiveFrameBytes()); } else { string error = Socket.ReceiveFrameString(); throw new SharpDBException(error); } }
internal void TransactionUpdate <T>(SharpDBTransaction transaction, T document) { object documentId = GetDocumentId(document); byte[] documentIdBytes = Serializer.SerializeDocumentId(documentId); byte[] blob = Serializer.SerializeDocument(document); UpdateInternal(documentIdBytes, blob, transaction); }
internal T TransactionGet <T>(SharpDBTransaction transaction, object documentId) { byte[] documentIdBytes = Serializer.SerializeDocumentId(documentId); byte[] blob = GetInternal(documentIdBytes, transaction); if (blob.Length > 0) { return(Serializer.DeserializeDocument <T>(blob)); } else { return(default(T)); } }
internal void RollbackTransaction(SharpDBTransaction transaction) { Socket.SendMoreFrame(Protocol.Rollback).SendFrame(transaction.TransactionIdBytes); bool result = BitConverter.ToBoolean(Socket.ReceiveFrameBytes(), 0); m_transactions.Remove(transaction); if (!result) { string error = Socket.ReceiveFrameString(); Log.ErrorFormat("Failed to rollback transaction {0}, error: {1}", transaction.TransactionId, error); throw new SharpDBException(error); } else { Log.DebugFormat("Transaction {0} rollbacked", transaction.TransactionId); } }
internal void CommitTransaction(SharpDBTransaction transaction) { Socket.SendMore(Protocol.Commit).Send(transaction.TransactionIdBytes); bool result = BitConverter.ToBoolean(Socket.Receive(), 0); m_transactions.Remove(transaction); if (!result) { string error = Socket.ReceiveString(); Log.ErrorFormat("Failed to commit transaction {0}, error: {1}", transaction.TransactionId, error); throw new SharpDBException(error); } else { Log.DebugFormat("Transaction {0} committed", transaction.TransactionId); } }
public void DeleteInternal(byte[] documentIdBytes, SharpDBTransaction transaction = null) { if (transaction != null) { Socket.SendMoreFrame(Protocol.TransactionDelete).SendMoreFrame(transaction.TransactionIdBytes); } else { Socket.SendMoreFrame(Protocol.Delete); } Socket.SendFrame(documentIdBytes); bool result = BitConverter.ToBoolean(Socket.ReceiveFrameBytes(), 0); if (!result) { string error = Socket.ReceiveFrameString(); throw new SharpDBException(error); } }
internal void UpdateInternal(byte[] documentIdBytes, byte[] blob, SharpDBTransaction transaction = null) { if (transaction != null) { Socket.SendMore(Protocol.TransactionUpdate).SendMore(transaction.TransactionIdBytes); } else { Socket.SendMore(Protocol.Update); } Socket.SendMore(documentIdBytes).Send(blob); bool result = BitConverter.ToBoolean(Socket.Receive(), 0); if (!result) { string error = Socket.ReceiveString(); throw new SharpDBException(error); } }
internal void TransactionDeleteDocumentById(SharpDBTransaction transaction, object documentId) { byte[] documentIdBytes = Serializer.SerializeDocumentId(documentId); DeleteInternal(documentIdBytes, transaction); }
internal void TransactionDeleteDocument <T>(SharpDBTransaction transaction, T document) { TransactionDeleteDocumentById(transaction, GetDocumentId(document)); }