예제 #1
0
        protected IEventCacheReadObject ProcessSimpleEvent(
            Guid componentId,
            Event eventObj,
            Guid?oldEventId,
            TimeSpan joinInterval,
            Guid accountId)
        {
            // используем блокировку, чтобы потокобезопасно склеивать события на стороне диспетчера
            var lockObj = LockObject.ForProcessSimpleEvent(componentId, eventObj.EventTypeId, eventObj.JoinKeyHash);

            lock (lockObj)
            {
                // склеиваем
                bool isEventNew;
                var  rEvent = CreateOrJoinSimpleEvent(componentId, eventObj, oldEventId, joinInterval, accountId, out isEventNew);

                // обновим статус компонента
                if (rEvent != null)
                {
                    Context.ComponentService.ProcessEvent(accountId, componentId, rEvent);
                }
                return(rEvent);
            }
        }