Files
UnrealEngineUWP/Engine/Source/Programs/Shared/EpicGames.Perforce/IPerforceConnection.cs
Ben Marsh e7ab127649 [CS] Various improvements to Perforce library.
- Removed functionality to set environment variables through the IPerforceConnection object. This is now handled via PerforceEnvironment.
- Added support for logging in using the native Perforce connection implementation.
- Started migrating methods that return a list of responses to return an IAsyncEnumerable instead. This makes it much easier to perform stream processing on requests that return a lot of data.
- Added the "p4 depot" command.
- Added the "p4 have" command.
- Added the "p4 opened" command.
- Added the "p4 stream" command.
- Added the "p4 users" command.
- Added support for printing files to a temporary file, and for p4 print commands returning metadata along with the payload in its response.
- Fixed stream corruption using native Perforce library if a record did not completely fit within the output buffer.

#preflight none

[CL 18504069 by Ben Marsh in ue5-main branch]
2022-01-03 17:18:56 -05:00

46 lines
1.4 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace EpicGames.Perforce
{
/// <summary>
/// Base interface for Perforce clients
/// </summary>
public interface IPerforceConnection : IDisposable
{
/// <summary>
/// Connection settings
/// </summary>
IPerforceSettings Settings { get; }
/// <summary>
/// Logger for this connection
/// </summary>
ILogger Logger { get; }
/// <summary>
/// Runs a Perforce command
/// </summary>
/// <param name="Command">The command name</param>
/// <param name="Arguments">Arguments for the command</param>
/// <param name="FileArguments">File arguments (may be put into a response file)</param>
/// <param name="InputData">Input data to be passed to the command</param>
/// <returns>Response object</returns>
Task<IPerforceOutput> CommandAsync(string Command, IReadOnlyList<string> Arguments, IReadOnlyList<string>? FileArguments, byte[]? InputData);
/// <summary>
/// Execute the 'login' command
/// </summary>
/// <param name="Password">Password to use to login</param>
/// <param name="CancellationToken">Token used to cancel the operation</param>
/// <returns>Response from the server</returns>
Task<IPerforceOutput> LoginCommandAsync(string Password, CancellationToken CancellationToken = default);
}
}