// Copyright Epic Games, Inc. All Rights Reserved.
using System.Collections.Generic;
using System.Threading.Tasks;
using EpicGames.Core;
using EpicGames.Serialization;
namespace EpicGames.Perforce.Managed
{
///
/// Interface for
///
public abstract class StreamTreeReader
{
///
/// Reads a node of the tree
///
///
///
public abstract Task ReadAsync(StreamTreeRef treeRef);
}
///
/// Implements a using a contiguous block of memory
///
public class StreamTreeMemoryReader : StreamTreeReader
{
///
/// Map from hash to encoded CB tree object
///
readonly Dictionary _hashToTree;
///
/// Constructor
///
///
public StreamTreeMemoryReader(Dictionary hashToTree)
{
_hashToTree = hashToTree;
}
///
public override Task ReadAsync(StreamTreeRef treeRef)
{
return Task.FromResult(new StreamTree(treeRef.Path, _hashToTree[treeRef.Hash]));
}
}
}