Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }