ObjectCacheSettings(ObjectCacheSettings other)
 {
     this.CacheLimit = other.CacheLimit;
     this.IdleTimeout = other.IdleTimeout;
     this.LeaseTimeout = other.LeaseTimeout;
     this.PurgeFrequency = other.PurgeFrequency;
 }
示例#2
0
 ObjectCacheSettings(ObjectCacheSettings other)
 {
     this.CacheLimit     = other.CacheLimit;
     this.IdleTimeout    = other.IdleTimeout;
     this.LeaseTimeout   = other.LeaseTimeout;
     this.PurgeFrequency = other.PurgeFrequency;
 }
示例#3
0
        public DarkRiftClient(int maxCachedWriters = 2, int maxCachedReaders = 2, int maxCachedMessages = 4, int maxCachedSocketAsyncEventArgs = 32, int maxActionDispatcherTasks = 16)
        {
            ObjectCacheSettings objectCacheSettings = DefaultCacheSettings;

            objectCacheSettings.MaxWriters               = maxCachedWriters;
            objectCacheSettings.MaxReaders               = maxCachedReaders;
            objectCacheSettings.MaxMessages              = maxCachedMessages;
            objectCacheSettings.MaxSocketAsyncEventArgs  = maxCachedSocketAsyncEventArgs;
            objectCacheSettings.MaxActionDispatcherTasks = maxActionDispatcherTasks;

            ObjectCache.Initialize(objectCacheSettings);

            this.RoundTripTime = new RoundTripTimeHelper(10, 10);
        }
示例#4
0
        public DarkRiftClient(ObjectCacheSettings objectCacheSettings)
        {
            ObjectCache.Initialize(objectCacheSettings);

            if (objectCacheSettings is ClientObjectCacheSettings settings)
            {
                ClientObjectCache.Initialize(settings);
            }
            else
            {
                ClientObjectCacheSettings clientObjectCacheSettings = new ClientObjectCacheSettings {
                    MaxMessageReceivedEventArgs = 4
                };
                ClientObjectCache.Initialize(clientObjectCacheSettings);
            }

            this.RoundTripTime = new RoundTripTimeHelper(10, 10);
        }
示例#5
0
 internal ObjectCache <InternalSendMessage.FactoryCacheKey, InternalSendMessage.ChannelFactoryReference> GetFactoryCache()
 {
     if (this.factoryCache == null)
     {
         this.isReadOnly = true;
         lock (this.thisLock)
         {
             this.ThrowIfDisposed();
             if (this.factoryCache == null)
             {
                 ObjectCacheSettings settings = new ObjectCacheSettings {
                     CacheLimit   = this.FactorySettings.MaxItemsInCache,
                     IdleTimeout  = this.FactorySettings.IdleTimeout,
                     LeaseTimeout = this.FactorySettings.LeaseTimeout
                 };
                 this.factoryCache = new ObjectCache <InternalSendMessage.FactoryCacheKey, InternalSendMessage.ChannelFactoryReference>(settings);
             }
         }
     }
     return(this.factoryCache);
 }
示例#6
0
    public ObjectCacheSettings ToObjectCacheSettings()
    {
        ObjectCacheSettings objectCacheSettings = new ObjectCacheSettings();

        objectCacheSettings.MaxWriters               = maxWriters;
        objectCacheSettings.MaxReaders               = maxReaders;
        objectCacheSettings.MaxMessages              = maxMessages;
        objectCacheSettings.MaxMessageBuffers        = maxMessageBuffers;
        objectCacheSettings.MaxSocketAsyncEventArgs  = maxSocketAsyncEventArgs;
        objectCacheSettings.MaxActionDispatcherTasks = maxActionDispatcherTasks;
        objectCacheSettings.MaxAutoRecyclingArrays   = maxAutoRecyclingArrays;

        objectCacheSettings.ExtraSmallMemoryBlockSize = extraSmallMemoryBlockSize;
        objectCacheSettings.MaxExtraSmallMemoryBlocks = maxExtraSmallMemoryBlocks;
        objectCacheSettings.SmallMemoryBlockSize      = smallMemoryBlockSize;
        objectCacheSettings.MaxSmallMemoryBlocks      = maxSmallMemoryBlocks;
        objectCacheSettings.MediumMemoryBlockSize     = mediumMemoryBlockSize;
        objectCacheSettings.MaxMediumMemoryBlocks     = maxMediumMemoryBlocks;
        objectCacheSettings.LargeMemoryBlockSize      = largeMemoryBlockSize;
        objectCacheSettings.MaxLargeMemoryBlocks      = maxLargeMemoryBlocks;
        objectCacheSettings.ExtraLargeMemoryBlockSize = extraLargeMemoryBlockSize;
        objectCacheSettings.MaxExtraLargeMemoryBlocks = maxExtraLargeMemoryBlocks;
        return(objectCacheSettings);
    }
示例#7
0
        // factory cache will be created on first usage after which the settings are immutable
        internal ObjectCache <InternalSendMessage.FactoryCacheKey, InternalSendMessage.ChannelFactoryReference> GetFactoryCache()
        {
            if (this.factoryCache == null)
            {
                this.isReadOnly = true;
                lock (thisLock)
                {
                    ThrowIfDisposed();

                    if (this.factoryCache == null)
                    {
                        // we don't need to set DisposeItemCallback since InternalSendMessage.ChannelFactoryReference is IDisposable
                        ObjectCacheSettings objectCacheSettings = new ObjectCacheSettings
                        {
                            CacheLimit   = this.FactorySettings.MaxItemsInCache,
                            IdleTimeout  = this.FactorySettings.IdleTimeout,
                            LeaseTimeout = this.FactorySettings.LeaseTimeout
                        };
                        this.factoryCache = new ObjectCache <InternalSendMessage.FactoryCacheKey, InternalSendMessage.ChannelFactoryReference>(objectCacheSettings);
                    }
                }
            }
            return(this.factoryCache);
        }