public void Set(string key, [NotNull] byte[] value) { var encodedKey = new EncodedKey(key); if (encodedKey.KeyBytes.Length > KeyLengthLimit) { throw new ArgumentOutOfRangeException(nameof(key), string.Format("The key cannot be longer than '{0}' when encoded with UTF-8.", KeyLengthLimit)); } Load(); if (!_tryEstablishSession()) { throw new InvalidOperationException("The session cannot be established after the response has started."); } _isModified = true; byte[] copy = new byte[value.Length]; Buffer.BlockCopy(src: value, srcOffset: 0, dst: copy, dstOffset: 0, count: value.Length); _store[encodedKey] = copy; }
public void Set(string key, byte[] value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } var encodedKey = new EncodedKey(key); if (encodedKey.KeyBytes.Length > KeyLengthLimit) { throw new ArgumentOutOfRangeException(nameof(key), Resources.FormatException_KeyLengthIsExceeded(KeyLengthLimit)); } Load(); if (!_tryEstablishSession()) { throw new InvalidOperationException(Resources.Exception_InvalidSessionEstablishment); } _isModified = true; byte[] copy = new byte[value.Length]; Buffer.BlockCopy(src: value, srcOffset: 0, dst: copy, dstOffset: 0, count: value.Length); _store[encodedKey] = copy; }
private void Deserialize(Stream content) { if (content == null || content.ReadByte() != SerializationRevision) { // TODO: Throw? // Replace the un-readable format. _isModified = true; return; } int expectedEntries = DeserializeNumFrom3Bytes(content); for (int i = 0; i < expectedEntries; i++) { int keyLength = DeserializeNumFrom2Bytes(content); var key = new EncodedKey(ReadBytes(content, keyLength)); int dataLength = DeserializeNumFrom4Bytes(content); _store[key] = ReadBytes(content, dataLength); } }
public void Set(string key, ArraySegment<byte> value) { var encodedKey = new EncodedKey(key); if (encodedKey.KeyBytes.Length > KeyLengthLimit) { throw new ArgumentOutOfRangeException("key", key, string.Format("The key cannot be longer than '{0}' when encoded with UTF-8.", KeyLengthLimit)); } if (value.Array == null) { throw new ArgumentException("The ArraySegment<byte>.Array cannot be null.", "value"); } Load(); if (!_tryEstablishSession()) { throw new InvalidOperationException("The session cannot be established after the response has started."); } _isModified = true; byte[] copy = new byte[value.Count]; Buffer.BlockCopy(value.Array, value.Offset, copy, 0, value.Count); _store[encodedKey] = copy; }