当前位置: 首页>>代码示例>>C#>>正文


C# PackFile.GetPackFile方法代码示例

本文整理汇总了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()));
				}
			}
		}
开发者ID:yayanyang,项目名称:monodevelop,代码行数:46,代码来源:WindowCursor.cs

示例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));
		}
开发者ID:yayanyang,项目名称:monodevelop,代码行数:31,代码来源:ObjectDirectory.cs


注:本文中的PackFile.GetPackFile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。