using System;
using System.Threading;
using System.Threading.Tasks;
using RethinkDb.Driver.Ast;
namespace RethinkDb.Driver.Net
{
///
/// Represents a marker interface for either a Connection or ConnectionPool.
/// This should really only be used for IoC purpose. Do not call methods
/// explicitly from this interface, instead the Run* methods at the end of a query.
///
public interface IConnection : IDisposable
{
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
Task RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken);
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
Task> RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken);
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
Task RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken);
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
Task RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken);
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
void RunNoReply(ReqlAst term, object globalOpts);
///
/// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY.
///
Task RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken);
}
}