internal static WorkRequestArgs <IPEndPoint> GimmeWork(IPEndPoint origin, ReadOnlySpan <byte> buff) { buff = LoadOps.LoadUshort(buff, out var kind); buff = LoadOps.LoadUlong(buff, out var reservation); ThrowIfNotFullyConsumed(buff); var format = (WireAlgoFormat)kind; return(new WorkRequestArgs <IPEndPoint>(origin, format, reservation)); }
internal static NonceFoundArgs FoundNonce(ReadOnlySpan <byte> buff) { buff = LoadOps.LoadUint(buff, out var wid); buff = LoadOps.LoadUlong(buff, out var offset); buff = LoadOps.LoadByte(buff, out var uintCount); buff = LoadOps.LoadByteArr(buff, uintCount * 4, out var hash); ThrowIfNotFullyConsumed(buff); return(new NonceFoundArgs(wid, offset, hash)); }
internal static TurnOnArgs <IPEndPoint> Hello(IPEndPoint origin, ReadOnlySpan <byte> buff) { buff = LoadOps.LoadByte(buff, out var unilen); buff = LoadOps.LoadByte(buff, out var devlen); buff = LoadOps.LoadByteArr(buff, unilen, out var ident); buff = LoadOps.LoadByteArr(buff, devlen, out var devspec); ThrowIfNotFullyConsumed(buff); return(new TurnOnArgs <IPEndPoint>(origin, ident, devspec)); }
public void CanLoadByte() { byte expect = 5; var blob = new byte[1] { expect }; var span = LoadOps.LoadByte(blob, out var loaded); Assert.True(span.IsEmpty); Assert.Equal(expect, loaded); }
public void UlongLoadedFromBigEndian() { ulong expect = 0xABCDEF01_23456789; var blob = new byte[8] { 0x89, 0x67, 0x45, 0x23, 0x01, 0xEF, 0xCD, 0xAB }; var span = LoadOps.LoadUlong(blob, out var loaded); Assert.True(span.IsEmpty); Assert.Equal(expect, loaded); }
public void UintLoadedFromBigEndian() { uint expect = 0xABCDEF01; var blob = new byte[4] { 0x01, 0xEF, 0xCD, 0xAB }; var span = LoadOps.LoadUint(blob, out var loaded); Assert.True(span.IsEmpty); Assert.Equal(expect, loaded); }
public void UshortLoadedFromBigEndian() { ushort expect = 0xABCD; var blob = new byte[2] { 0xCD, 0xAB }; var span = LoadOps.LoadUshort(blob, out var loaded); Assert.True(span.IsEmpty); Assert.Equal(expect, loaded); }