Exemple #1
0
 public void FireEvent(IDataIdentifier data, Object[] args)
 {
     if (HasPendingTransaction())
     {
         MyPendingEvents.Add(new EventFire(data, args));
     }
     else
     {
         foreach (EventSubscription eventSubscription in (ArrayList)(MyEventSubscriptions.Clone()))
         {
             // Compare if fired data object is same as
             // subscribed data object.
             // Try to compare with the IDataIdentity interface if possible.
             // The IDataIdentity interface works independet
             // from changes of the identifier.
             if (((data is IDataIdentity) &&
                  (eventSubscription.GetData() is IDataIdentity) &&
                  (AreEqual((IDataIdentity)data, (IDataIdentity)(eventSubscription.GetData())))) ||
                 AreEqual(data, eventSubscription.GetData()))
             {
                 // Notify subscriber of event.
                 eventSubscription.GetDelegate().DynamicInvoke(args);
             }
         }
     }
 }
Exemple #2
0
            internal void                   SetValue <V>(IDataIdentifier dataIdentifier, V val)
            {
                object oVal;

                if (this._data.TryGetValue(dataIdentifier, out oVal))
                {
                    if (oVal is V)
                    {
                        if (Equals(val, default(V)))
                        {
                            this._data.Remove(dataIdentifier);
                        }
                        else
                        {
                            this._data[dataIdentifier] = val;
                        }
                    }
                    else
                    {
                        Debug.LogError("Setting different value type for identifier " + dataIdentifier);
                    }
                }
                else
                {
                    this._data.Add(dataIdentifier, val);
                }
            }
 public void Store <T>(IDataIdentifier id, T value)
 {
     if (Contains(id) && !Get <T>(id).Equals(value))
     {
         changes.OnNext(id);
     }
     values[id] = value;
 }
Exemple #4
0
        public System.Xml.XmlDocument OpenData(IDataIdentifier id)
        {
            //TODO - Review this later.
            string nullDataFilter = dataXPathTemplate[NullFilter].Template;
            string query          = nullDataFilter.Replace(SelectionPlaceholder, ((GuidIdentifier)id).ID.ToString());

            return(GetXmlDocument(GetXml(query)));
        }
Exemple #5
0
        public System.Xml.XmlDocument OpenData(IDataIdentifier id, IDataFilter filter)
        {
            //TODO - Review this later.
            string dataFilterTemplate = dataXPathTemplate[filter.TemplateName].Template;
            string selection          = dataFilterTemplate.Replace(SelectionPlaceholder, ((GuidIdentifier)id).ID.ToString());

            return(GetXmlDocument(GetXml(filter.GetFilterExpression(selection))));
        }
Exemple #6
0
 public DataUpdateLock(Guid id, IDataIdentifier data, DateTime expiresAt)
 {
     this.id              = id;
     this.data            = data;
     this.expiresAt       = expiresAt;
     expiryTimer          = new Timer();
     expiryTimer.Interval = (expiresAt - DateTime.Now).Milliseconds;
     expiryTimer.Enabled  = true;
     expiryTimer.Elapsed += new ElapsedEventHandler(expiryTimer_Elapsed);
 }
Exemple #7
0
        public bool                         HasTileData(Vector2Int tile, IDataIdentifier dataIdentifier)
        {
            TileData tileData;

            if (this._tiles.TryGetValue(tile, out tileData))
            {
                return(tileData.HasValue(dataIdentifier));
            }
            return(false);
        }
        public void Setup()
        {
            datastore             = new StringObjectDatastore();
            observableDatastore   = (StringObjectDatastore)datastore;
            serializableDatastore = (StringObjectDatastore)datastore;

            id1 = new StringIdentifier("Key1");
            id2 = new StringIdentifier("Key2");
            id3 = new StringIdentifier("Key3");
        }
Exemple #9
0
 public void RemoveEventSubscription(IDataIdentifier data, Delegate dataDelegate)
 {
     foreach (EventSubscription eventSubscription in MyEventSubscriptions)
     {
         if (eventSubscription.GetDelegate() == dataDelegate)
         {
             MyEventSubscriptions.Remove(eventSubscription);
             break;
         }
     }
 }
Exemple #10
0
        public IEnumerable <V> GetAllTilesData <V>(IDataIdentifier dataIdentifier)
        {
            V data;

            foreach (var tileData in this._tiles.Values)
            {
                if (tileData.TryGetValue(dataIdentifier, out data))
                {
                    yield return(data);
                }
            }
        }
Exemple #11
0
            internal bool                   TryGetValue <V>(IDataIdentifier dataIdentifier, out V val)
            {
                object oVal;

                if (this._data.TryGetValue(dataIdentifier, out oVal) &&
                    oVal is V)
                {
                    val = (V)oVal;
                    return(true);
                }
                val = default(V);
                return(false);
            }
Exemple #12
0
 public DataUpdateLock GetUpdateLock(IDataIdentifier id)
 {
     lock (locked)
     {
         if (locked.Contains(id))
         {
             return(null);
         }
         DataUpdateLock updateLock = new DataUpdateLock(Guid.NewGuid(), id, DateTime.Now.AddMinutes(1));
         updateLocks.Add(updateLock.Id, updateLock);
         locked.Add(id);
         updateLock.OnLockExpired += new LockExpiryEvent(OnLockExpired);
         return(updateLock);
     }
 }
Exemple #13
0
        public bool                         GetTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier, out V data)
        {
            TileData tileData;

            if (this._tiles.TryGetValue(tile, out tileData))
            {
                if (tileData.TryGetValue(dataIdentifier, out data))
                {
                    return(data != null);
                }
            }
            else
            {
                data = default(V);
            }
            return(false);
        }
Exemple #14
0
        public void                         UnsetTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier)
        {
            TileData tileData;

            if (this._tiles.TryGetValue(tile, out tileData))
            {
                if (tileData.UnsetValue <V>(dataIdentifier))
                {
                    if (!tileData.HasValues())
                    {
                        this._tiles.Remove(tile);
                        tileData.Clear(true);
                        AutoPool <TileData> .Dispose(tileData);
                    }
                }
            }
        }
Exemple #15
0
        public bool                         HasTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier, V search)
        {
            V        data;
            TileData tileData;

            if (this._tiles.TryGetValue(tile, out tileData))
            {
                if (tileData.TryGetValue(dataIdentifier, out data))
                {
                    return(Object.Equals(data, search));
                }
            }
            else
            {
                data = default(V);
            }
            return(false);
        }
Exemple #16
0
        public void                         SetTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier, V data)
        {
            TileData tileData;

            if (!this._tiles.TryGetValue(tile, out tileData))
            {
                if (!Equals(default(V), data))
                {
                    tileData = AutoPool <TileData> .Create();

                    this._tiles.Add(tile, tileData);
                }
                else
                {
                    return;
                }
            }
            tileData.SetValue(dataIdentifier, data);
        }
        public static Boolean AreEqual(IDataIdentifier object1, IDataIdentifier object2)
        {
            // Check referenses.
            if (IsNull(object1) && IsNull(object2))
            {
                return(true);
            }
            if (IsNull(object1) || IsNull(object2))
            {
                return(false);
            }

            // Check type.
            if (object1.GetDataType() != object2.GetDataType())
            {
                return(false);
            }

            // Check identifier.
            return(AreEqual(object1.GetIdentifier(), object2.GetIdentifier()));
        }
 public static Boolean AreNotEqual(IDataIdentifier object1, IDataIdentifier object2)
 {
     return(!AreEqual(object1, object2));
 }
Exemple #19
0
 internal bool                   UnsetValue <V>(IDataIdentifier dataIdentifier)
 {
     return(this._data.Remove(dataIdentifier));
 }
Exemple #20
0
        public IEnumerable <V> GetMatchingTilesData <V>(Vector2Int tileFrom, Vector2Int tileTo, IDataIdentifier dataIdentifier)
        {
            V          data;
            Vector2Int gridPos = new Vector2Int();
            int        xMin    = Mathf.Min(tileFrom.x, tileTo.x);
            int        xMax    = Mathf.Max(tileFrom.x, tileTo.x);
            int        yMin    = Mathf.Min(tileFrom.y, tileTo.y);
            int        yMax    = Mathf.Max(tileFrom.y, tileTo.y);

            for (int x = xMin; x <= xMax; ++x)
            {
                for (int y = yMin; y <= yMax; ++y)
                {
                    gridPos.Set(x, y);
                    if (GetTileData(gridPos, dataIdentifier, out data))
                    {
                        yield return(data);
                    }
                }
            }
        }
Exemple #21
0
 public void                         UnsetTileData <V>(Vector2Int tileFrom, Vector2Int tileTo, IDataIdentifier dataIdentifier)
 {
     ForEach(tileFrom, tileTo, this.UnsetTileData <V>, dataIdentifier);
 }
Exemple #22
0
 public void UpdateData(System.Xml.XmlDocument updatedData, IDataIdentifier id)
 {
     throw new NotImplementedException();
 }
Exemple #23
0
 public bool                         HasTileData <V>(Vector2Int tileFrom, Vector2Int tileTo, IDataIdentifier dataIdentifier, V searchType, Match match = Match.Any)
 {
     if (match == Match.All)
     {
         return(All(tileFrom, tileTo, this.HasTileData, dataIdentifier, searchType));
     }
     else
     {
         return(Any(tileFrom, tileTo, this.HasTileData, dataIdentifier, searchType));
     }
 }
Exemple #24
0
        public static bool                  All <P>(Vector2Int tileFrom, Vector2Int tileTo, System.Func <Vector2Int, IDataIdentifier, P, bool> action, IDataIdentifier dataIdentifier, P param)
        {
            Vector2Int gridPos = new Vector2Int();
            int        xMin    = Mathf.Min(tileFrom.x, tileTo.x);
            int        xMax    = Mathf.Max(tileFrom.x, tileTo.x);
            int        yMin    = Mathf.Min(tileFrom.y, tileTo.y);
            int        yMax    = Mathf.Max(tileFrom.y, tileTo.y);

            for (int x = xMin; x <= xMax; ++x)
            {
                for (int y = yMin; y <= yMax; ++y)
                {
                    gridPos.Set(x, y);
                    if (!action(gridPos, dataIdentifier, param))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Exemple #25
0
        public static void                  ForEach <P>(Vector2Int tileFrom, Vector2Int tileTo, System.Action <Vector2Int, IDataIdentifier, P> action, IDataIdentifier dataIdentifier, P param)
        {
            Vector2Int gridPos = new Vector2Int();
            int        xMin    = Mathf.Min(tileFrom.x, tileTo.x);
            int        xMax    = Mathf.Max(tileFrom.x, tileTo.x);
            int        yMin    = Mathf.Min(tileFrom.y, tileTo.y);
            int        yMax    = Mathf.Max(tileFrom.y, tileTo.y);

            for (int x = xMin; x <= xMax; ++x)
            {
                for (int y = yMin; y <= yMax; ++y)
                {
                    gridPos.Set(x, y);
                    action(gridPos, dataIdentifier, param);
                }
            }
        }
Exemple #26
0
 public XmlDocument OpenData(IDataIdentifier id, IDataFilter filter)
 {
     return(catalogSource.OpenData(id, filter));
 }
Exemple #27
0
 public XmlDocument OpenData(IDataIdentifier id)
 {
     return(catalogSource.OpenData(id));
 }
Exemple #28
0
 public void AddEventSubscription(IDataIdentifier data, Delegate dataDelegate)
 {
     MyEventSubscriptions.Add(new EventSubscription(data, dataDelegate));
 }
Exemple #29
0
 public void                         SetTileData <V>(Vector2Int tileFrom, Vector2Int tileTo, IDataIdentifier dataIdentifier, V data)
 {
     ForEach(tileFrom, tileTo, this.SetTileData, dataIdentifier, data);
 }
Exemple #30
0
 internal bool                   HasValue(IDataIdentifier dataIdentifier)
 {
     return(this._data.ContainsKey(dataIdentifier));
 }