Beispiel #1
0
        public RealDataServerProcess()
        {
            mTagManager  = ServiceLocator.Locator.Resolve <ITagManager>();
            mTagConsumer = ServiceLocator.Locator.Resolve <IRealTagConsumer>();

            ServiceLocator.Locator.Resolve <IRealDataNotify>().SubscribeValueChangedForConsumer("RealDataServerProcess", new ValueChangedNotifyProcesser.ValueChangedDelegate((ids, len) => {
                lock (mChangedTags)
                {
                    int[] vtmp = ArrayPool <int> .Shared.Rent(len);
                    Array.Copy(ids, 0, vtmp, 0, len);
                    mChangedTags.Enqueue(new Tuple <int[], int>(vtmp, len));
                }
                if (!mIsClosed)
                {
                    resetEvent.Set();
                }
            }), new ValueChangedNotifyProcesser.BlockChangedDelegate((bids) => {
                if (mBlockCallBackRegistorIds.Count > 0)
                {
                    lock (mChangedBlocks)
                        mChangedBlocks.Enqueue(bids);
                }
                if (!mIsClosed)
                {
                    resetEvent.Set();
                }
            }), null, RealDataNotifyType.Block);
        }
Beispiel #2
0
 public RealDataServerProcess()
 {
     mTagManager  = ServiceLocator.Locator.Resolve <ITagManager>();
     mTagConsumer = ServiceLocator.Locator.Resolve <IRealTagConsumer>();
     DatabaseRunner.Manager.ValueUpdateEvent += Manager_ValueUpdateEvent;
 }