//using Capnp.Rpc; //using FabAccessAPI.Schema; //using System; //using System.Collections.Generic; //using System.Linq; //using System.Threading; //using System.Threading.Tasks; //namespace FabAccessAPI { // public class Connection { // #region private variables // private readonly TcpRpcClient? _rpcClient = null; // private readonly IBootstrap? _bootstrapCap = null; // private Auth? _auth = null; // private Machines? _machines = null; // #endregion // public TcpRpcClient? RpcClient => _rpcClient; // #region Log // private static readonly log4net.ILog _Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); // #endregion // /// // /// // /// // /// Should be an already configured and connected TcpRpcClient // public Connection(TcpRpcClient rpcClient) { // _rpcClient = rpcClient; // _bootstrapCap = _rpcClient.GetMain(); // _Log.Debug($"Done bootstraping API connection."); // } // /// // /// Authenticate this connection. // /// Calling this more then once is UB // /// // /// The desired authentication mechanism // /// Key-Value data specific to the mechanism // /// // public async Task Auth(string mech, Dictionary kvs, CancellationToken cancellationToken_ = default) { // // _bootstrapCap = await _bootstrapCap.Unwrap(); // var authCap = await _bootstrapCap.Auth(cancellationToken_); // _auth = new Auth(authCap); // var mechs = await _auth.GetMechanisms(); // _Log.Debug($"The Server supports the following auth mechs: {string.Join(", ", mechs)}"); // if (!mechs.Contains(mech)) { // throw new UnsupportedMechanismException(); // } // await _auth.Authenticate(mech, kvs); // } // /// // /// Get a wrapped capability to interact with machines // /// // /// A wrapped capability to interact with machines // public async Task AccessMachines() { // _machines ??= new Machines(await _bootstrapCap.Machines()); // return _machines; // } // } //}