public Prefix(ulong version, MulticodecCode codec, HashType mhType, int mhLength) { Version = version; Codec = codec; MultihashType = mhType; MultihashLength = mhLength; }
public static byte[] SplitPrefix(byte[] data, int offset, int count, out MulticodecCode code) { ulong ulcode; var n = Binary.Varint.Read(data, offset, out ulcode); code = (MulticodecCode)ulcode; return(data.Skip(offset + n).Take(count - (offset + n)).ToArray()); }
public void RoundTrip(MulticodecCode code) { var data = Encoding.UTF8.GetBytes("Hello World"); var mcdata = MulticodecPacked.AddPrefix(code, data); MulticodecCode outc; var outdata = MulticodecPacked.SplitPrefix(mcdata, out outc); Assert.Equal(outc, code); Assert.Equal(MulticodecPacked.GetCode(mcdata), code); Assert.Equal(outdata, data); }
public static string GetString(this MulticodecCode code) { var memberInfo = code.GetType().GetMember(code.ToString()); if (memberInfo != null && memberInfo.Length > 0) { var attr = memberInfo[0].GetCustomAttribute <StringValueAttribute>(); if (attr != null) { return(attr.Value); } } return(code.ToString().ToLower()); }
public void CanGetCorrectEnumFromNumber(ulong n, MulticodecCode expected) { Assert.Equal((MulticodecCode)n, expected); }
public void CanGetStringValuOfCode(MulticodecCode code, string expected) { Assert.Equal(code.GetString(), expected); }
public Cid(MulticodecCode codec, Multihash hash) : this(1, codec, hash) { }
protected Cid(ulong version, MulticodecCode codec, Multihash hash) { _version = version; Type = codec; Hash = hash; }
public static byte[] SplitPrefix(byte[] data, int offset, out MulticodecCode code) => SplitPrefix(data, offset, data.Length - offset, out code);
public static byte[] SplitPrefix(byte[] data, out MulticodecCode code) => SplitPrefix(data, 0, data.Length, out code);
public static byte[] AddPrefix(MulticodecCode code, byte[] data, int offset = 0, int?count = null) => Binary.Varint.GetBytes((ulong)code).Concat(data.Skip(offset).Take(count ?? data.Length - offset)).ToArray();
public void Register(MulticodecCode codec, Func <IBlock, INode> decoder) { _decoders.AddOrUpdate(codec, decoder, (c, existing) => decoder); }