using System;
namespace FASTER.core
{
///
/// Callback functions to FASTER
///
///
///
///
///
///
public interface IFunctions
{
///
/// Read completion
///
///
///
///
///
///
void ReadCompletionCallback(ref Key key, ref Input input, ref Output output, Context ctx, Status status);
///
/// Upsert completion
///
///
///
///
void UpsertCompletionCallback(ref Key key, ref Value value, Context ctx);
///
/// RMW completion
///
///
///
///
///
void RMWCompletionCallback(ref Key key, ref Input input, Context ctx, Status status);
///
/// Delete completion
///
///
///
void DeleteCompletionCallback(ref Key key, Context ctx);
///
/// Checkpoint completion callback (called per client session)
///
/// Session ID reporting persistence
/// Checkpoint offset (CPR point) for session
void CheckpointCompletionCallback(Guid sessionId, long serialNum);
///
/// Initial update for RMW
///
///
///
///
void InitialUpdater(ref Key key, ref Input input, ref Value value);
///
/// Copy-update for RMW
///
///
///
///
///
void CopyUpdater(ref Key key, ref Input input, ref Value oldValue, ref Value newValue);
///
/// In-place update for RMW
///
///
///
///
bool InPlaceUpdater(ref Key key, ref Input input, ref Value value);
///
/// Single reader
///
///
///
///
///
void SingleReader(ref Key key, ref Input input, ref Value value, ref Output dst);
///
/// Conncurrent reader
///
///
///
///
///
void ConcurrentReader(ref Key key, ref Input input, ref Value value, ref Output dst);
///
/// Single writer
///
///
///
///
void SingleWriter(ref Key key, ref Value src, ref Value dst);
///
/// Concurrent writer
///
///
///
///
bool ConcurrentWriter(ref Key key, ref Value src, ref Value dst);
}
}