本文整理汇总了C#中PackFile.GetPackFile方法的典型用法代码示例。如果您正苦于以下问题:C# PackFile.GetPackFile方法的具体用法?C# PackFile.GetPackFile怎么用?C# PackFile.GetPackFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PackFile
的用法示例。
在下文中一共展示了PackFile.GetPackFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopyPackAsIs
/// <exception cref="System.IO.IOException"></exception>
internal void CopyPackAsIs(PackFile pack, long length, bool validate, PackOutputStream
@out)
{
MessageDigest md = null;
if (validate)
{
md = Constants.NewMessageDigest();
byte[] buf = @out.GetCopyBuffer();
Pin(pack, 0);
if (window.Copy(0, buf, 0, 12) != 12)
{
pack.SetInvalid();
throw new IOException(JGitText.Get().packfileIsTruncated);
}
md.Update(buf, 0, 12);
}
long position = 12;
long remaining = length - (12 + 20);
while (0 < remaining)
{
Pin(pack, position);
int ptr = (int)(position - window.start);
int n = (int)Math.Min(window.Size() - ptr, remaining);
window.Write(@out, position, n, md);
position += n;
remaining -= n;
}
if (md != null)
{
byte[] buf = new byte[20];
byte[] actHash = md.Digest();
Pin(pack, position);
if (window.Copy(position, buf, 0, 20) != 20)
{
pack.SetInvalid();
throw new IOException(JGitText.Get().packfileIsTruncated);
}
if (!Arrays.Equals(actHash, buf))
{
pack.SetInvalid();
throw new IOException(MessageFormat.Format(JGitText.Get().packfileCorruptionDetected
, pack.GetPackFile().GetPath()));
}
}
}
示例2: InsertPack
private void InsertPack(PackFile pf)
{
ObjectDirectory.PackList o;
ObjectDirectory.PackList n;
do
{
o = packList.Get();
// If the pack in question is already present in the list
// (picked up by a concurrent thread that did a scan?) we
// do not want to insert it a second time.
//
PackFile[] oldList = o.packs;
string name = pf.GetPackFile().GetName();
foreach (PackFile p in oldList)
{
if (PackFile.SORT.Compare(pf, p) < 0)
{
break;
}
if (name.Equals(p.GetPackFile().GetName()))
{
return;
}
}
PackFile[] newList = new PackFile[1 + oldList.Length];
newList[0] = pf;
System.Array.Copy(oldList, 0, newList, 1, oldList.Length);
n = new ObjectDirectory.PackList(o.snapshot, newList);
}
while (!packList.CompareAndSet(o, n));
}