UnsafeCompare() public static method

public static UnsafeCompare ( byte a1, byte a2 ) : bool
a1 byte
a2 byte
return bool
Ejemplo n.º 1
0
        public void LoadByteKey(byte[] key)
        {
            int index = ByteKeys.FindIndex(x => x.Length == key.Length && BlobUtil.UnsafeCompare(x, key));

            if (index < 0)
            {
                ByteKeys.Add(key);
                index = ByteKeys.Count - 1;
            }

            ilgen.Emit(OpCodes.Ldarg_1);
            ilgen.Emit(index < 256 ? OpCodes.Ldc_I4_S : OpCodes.Ldc_I4, index);
            ilgen.Emit(OpCodes.Ldelem, typeof(byte[]));
        }
Ejemplo n.º 2
0
        public object Read(Object target, BlobReader reader)
        {
            if (target != null)
            {
                reader = reader.ReadFieldBlob();
            }

            object result = Activator.CreateInstance(targetType);

read_field:
            while (reader.CanTakeBytes(BlobReader.FieldHeaderLength))
            {
                reader.ReadFieldHeader();

                for (int i = 0; i < fields.Length; i++)
                {
                    var field = fields[i];

                    if ((field.PeekIntKey != -1 && field.PeekIntKey == reader.PeekIntKey) ||
                        (field.ByteKey.Length == reader.FieldKeyBytes && BlobUtil.UnsafeCompare(field.ByteKey, reader.ByteKey)))
                    {
                        field.Serializer.Read(result, reader);
                        goto read_field;
                    }
                }

                reader.SkipField();
            }

            reader.SkipSpare();

            if (target != null)
            {
                reader.Dispose();
            }

            return(result);
        }