public static UnsafeCompare ( byte a1, byte a2 ) : bool | ||
a1 | byte | |
a2 | byte | |
return | bool |
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[])); }
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); }