Exemplo n.º 1
0
        private async Task <bool> IsStale(VocabIdentifier vocabID, TimeSpan maxAge)
        {
            DateTimeOffset dt = await m_root.Store.GetUpdateDateAsync(vocabID.GetKey());

            TimeSpan offset = DateTimeOffset.Now.Subtract(dt);

            return(offset >= maxAge);
        }
Exemplo n.º 2
0
        private async Task EnsureVocabImplAsync(VocabIdentifier vocabID, TimeSpan maxAge)
        {
            bool isStale = await IsStale(vocabID, maxAge);

            if (isStale)
            {
                await DownloadVocabs(new[] { vocabID });
            }
        }
Exemplo n.º 3
0
        public IAsyncAction RemoveAsync(VocabIdentifier vocabID)
        {
            if (vocabID == null)
            {
                throw new ArgumentNullException("vocabID");
            }

            return(m_root.Store.DeleteAsync(vocabID.GetKey()).AsAsyncAction());
        }
Exemplo n.º 4
0
        public IAsyncOperation <VocabCodeSet> GetAsync(VocabIdentifier vocabID)
        {
            if (vocabID == null)
            {
                throw new ArgumentNullException("vocabID");
            }

            return(GetVocabAsync(vocabID).AsAsyncOperation());
        }
Exemplo n.º 5
0
        public IAsyncAction PutAsync(VocabIdentifier vocabID, VocabCodeSet vocab)
        {
            if (vocabID == null)
            {
                throw new ArgumentNullException("vocabID");
            }
            if (vocab == null)
            {
                throw new ArgumentNullException("vocab");
            }
            string key = vocabID.GetKey();

            return(m_root.Store.PutAsync(key, vocab).AsAsyncAction());
        }
Exemplo n.º 6
0
        private async Task EnsureVocabsImplAsync(IList <VocabIdentifier> vocabIDs, TimeSpan maxAge)
        {
            var staleVocabs = new LazyList <VocabIdentifier>();

            for (int i = 0; i < vocabIDs.Count; ++i)
            {
                VocabIdentifier vocabID = vocabIDs[i];
                if (await IsStale(vocabID, maxAge))
                {
                    staleVocabs.Add(vocabID);
                }
            }

            if (staleVocabs.Count > 0)
            {
                await DownloadVocabs(staleVocabs.Value);
            }
        }
Exemplo n.º 7
0
        public IAsyncOperation <VocabQueryResult> SearchAsync(VocabIdentifier vocab, string searchText)
        {
            vocab.ValidateRequired("vocab");

            return(AsyncInfo.Run(
                       async cancelToken =>
            {
                //VocabQuery query = new VocabQuery(vocab, searchText);
                var query = new object[]
                {
                    vocab,
                    new VocabSearch(searchText)
                };
                VocabQueryResults results =
                    await m_app.Client.ServiceMethods.SearchVocabulary <VocabQueryResults>(query, cancelToken);

                return results.HasMatches ? results.Matches : null;
            }));
        }
Exemplo n.º 8
0
        private async Task <VocabCodeSet> GetVocabAsync(VocabIdentifier vocabID)
        {
            string key = vocabID.GetKey();

            return((VocabCodeSet)await m_root.Store.GetAsync(key, typeof(VocabCodeSet)));
        }
Exemplo n.º 9
0
 /// <summary>
 /// If vocabs are not available, will kick off a fetch in the background
 /// </summary>
 public IAsyncAction EnsureVocabAsync(VocabIdentifier vocabID, int maxAgeSeconds)
 {
     return(Task.Run(() => EnsureVocabImplAsync(vocabID, TimeSpan.FromSeconds(maxAgeSeconds))).AsAsyncAction());
 }