public void ReplaceEvent()
        {
            var eventCache = new EventCacheDictionary();

            var eventData = new Hashtable {
                { 1, 1 }
            };
            string msg;

            Assert.That(eventCache.MergeEvent(1, 1, eventData, out msg));

            var eventData2 = new Hashtable {
                { 2, 2 }
            };

            eventCache.ReplaceEvent(1, 1, eventData2);

            EventCache ec;

            Assert.That(eventCache.TryGetEventCache(1, out ec), Is.True);

            Hashtable ed;

            Assert.That(ec.TryGetValue(1, out ed), Is.True);

            Assert.That(ed, Is.EqualTo(eventData2));
        }
Exemplo n.º 2
0
        protected bool UpdateEventCache(Actor actor, RaiseEventRequest raiseEventRequest, out string msg)
        {
            msg = null;
            CustomEvent customEvent;

            switch (raiseEventRequest.Cache)
            {
            case (byte)CacheOperation.DoNotCache: return(true);

            case (byte)CacheOperation.AddToRoomCache:
                customEvent = new CustomEvent(actor.ActorNr, raiseEventRequest.EvCode, raiseEventRequest.Data);
                EventCache.AddEvent(customEvent);
                return(true);

            case (byte)CacheOperation.AddToRoomCacheGlobal:
                customEvent = new CustomEvent(0, raiseEventRequest.EvCode, raiseEventRequest.Data);
                EventCache.AddEvent(customEvent);
                return(true);
            }

            // cache operations for the actor event cache currently only working with hashtable data
            Hashtable eventData;

            if (raiseEventRequest.Data == null || raiseEventRequest.Data is Hashtable)
            {
                eventData = (Hashtable)raiseEventRequest.Data;
            }
            else
            {
                msg = string.Format(
                    "Cache operation '{0}' requires a Hashtable as event data.",
                    raiseEventRequest.Cache);
                return(false);
            }

            switch (raiseEventRequest.Cache)
            {
            case (byte)CacheOperation.MergeCache:
                ActorEventCache.MergeEvent(actor.ActorNr, raiseEventRequest.EvCode, eventData);
                return(true);

            case (byte)CacheOperation.RemoveCache:
                ActorEventCache.RemoveEvent(actor.ActorNr, raiseEventRequest.EvCode);
                return(true);

            case (byte)CacheOperation.ReplaceCache:
                ActorEventCache.ReplaceEvent(actor.ActorNr, raiseEventRequest.EvCode, eventData);
                return(true);

            default:
                msg = string.Format("Unknown cache operation '{0}'.", raiseEventRequest.Cache);
                return(false);
            }
        }