Example #1
0
        public void Put(TKey key, Stream stream, uint length)
        {
            if ((object)key == null)
            {
                throw new ArgumentNullException("key");
            }
            if (length == 0)
            {
                Delete(key);
                return;
            }
            var action = FirkinHashChangeAction.Add;

            lock (_indexSyncRoot) {
                var keyBytes = _serializer.Serialize(key);
                if (keyBytes.LongLength > MaxKeySize)
                {
                    throw new KeyTooLargeException(keyBytes.LongLength, MaxKeySize);
                }
                var keyInfo = _head.Write(new KeyValuePair()
                {
                    Key       = keyBytes,
                    Value     = stream,
                    ValueSize = length
                });
                if (_changeObserver != null)
                {
                    action = _index.ContainsKey(key) ? FirkinHashChangeAction.Change : FirkinHashChangeAction.Add;
                }
                _index[key] = keyInfo;
                CheckHead();
            }
            if (_changeObserver != null)
            {
                _changeObserver(new FirkinHashChange <TKey>(key, action));
            }
        }
Example #2
0
 public void Write <T>(RegistryEntity <T> registryEntity)
 {
     try
     {
         byte[] serializedValue = _byteArraySerializer?.Serialize(registryEntity.Value);
         _registryKey?.SetValue(registryEntity.Name, serializedValue, registryEntity.RegistryValueKind);
     }
     catch (Exception e) when(e is ArgumentException || e is ObjectDisposedException ||
                              e is UnauthorizedAccessException || e is SecurityException || e is IOException)
     {
         Console.WriteLine(e.ToString());
     }
     catch (SerializationException e)
     {
         throw e;
     }
 }