using Esyur.Resource; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Esyur.Core; using Esyur.Data; using Esyur.Resource.Template; namespace Esyur.Stores { public class TemporaryStore : IStore { public Instance Instance { get; set; } public event DestroyedEvent OnDestroy; Dictionary resources = new Dictionary(); public void Destroy() { } public string Link(IResource resource) { if (resource.Instance.Store == this) return this.Instance.Name + "/" + resource.Instance.Id; return null; } public async AsyncReply Get(string path) { foreach (var r in resources) if (r.Value.IsAlive && (r.Value.Target as IResource).Instance.Name == path) return r.Value.Target as IResource; return null; } public async AsyncReply Put(IResource resource) { resources.Add(resource.Instance.Id, new WeakReference( resource));// new WeakReference(resource)); return true; } public AsyncReply Retrieve(uint iid) { if (resources.ContainsKey(iid)) { if (resources.ContainsKey(iid) && resources[iid].IsAlive)// .TryGetTarget(out r)) return new AsyncReply(resources[iid].Target as IResource); else return new AsyncReply(null); } else return new AsyncReply(null); } public AsyncReply Trigger(ResourceTrigger trigger) { return new AsyncReply(true); } public bool Record(IResource resource, string propertyName, object value, ulong age, DateTime dateTime) { throw new NotImplementedException(); } public AsyncReply> GetRecord(IResource resource, DateTime fromDate, DateTime toDate) { throw new NotImplementedException(); } public bool Remove(IResource resource) { resources.Remove(resource.Instance.Id); return true; } public bool Modify(IResource resource, string propertyName, object value, ulong age, DateTime dateTime) { return true; } public AsyncReply AddChild(IResource parent, IResource child) { throw new NotImplementedException(); } public AsyncReply RemoveChild(IResource parent, IResource child) { throw new NotImplementedException(); } public AsyncReply AddParent(IResource child, IResource parent) { throw new NotImplementedException(); } public AsyncReply RemoveParent(IResource child, IResource parent) { throw new NotImplementedException(); } public AsyncBag Children(IResource resource, string name) where T : IResource { throw new NotImplementedException(); } public AsyncBag Parents(IResource resource, string name) where T : IResource { throw new NotImplementedException(); } } }