示例#1
0
        public void UpdateJsonSyncingFeed(long groupId, JsonSyncingFeed state)
        {
            DbSyncingFeed row = new DbSyncingFeed();

            row.FeedId = groupId;

            // Update the aggregated properties
            row.LastUpdateUtc      = state.LastUpdateUtc;
            row.LastCheckNewUtc    = state.LastCheckNewUtc;
            row.ReachedEmptyResult = state.ReachedEmptyResult;
            row.HasSpanGaps        = state.HasSpanGaps;

            row.Json = SQLiteJsonConverter.SaveToJson(state);
            SyncingFeeds.InsertRecord(row, SQLiteConflictResolution.Replace);
        }
示例#2
0
        static JsonMessageEnvelope ConvertArchiveMessageEnvelope(JsonMessageEnvelopeUntyped untypedEnvelope)
        {
            string reserializedString    = SQLiteJsonConverter.SaveToJson(untypedEnvelope);
            JsonMessageEnvelope envelope = SQLiteJsonConverter.LoadFromJson <JsonMessageEnvelope>(reserializedString);

            // Use untypedEnvelope to fill in the RawJson properties
            for (int i = 0; i < untypedEnvelope.Messages.Length; ++i)
            {
                JObject archiveMessage      = untypedEnvelope.Messages[i];
                string  reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveMessage);
                envelope.Messages[i].RawJson = reserializedMessage;
            }

            foreach (var pair in untypedEnvelope.ThreadedExtended)
            {
                long      threadId           = pair.Key;
                JObject[] archiveMessageList = pair.Value;

                var messageList = envelope.ThreadedExtended[threadId];
                for (int i = 0; i < archiveMessageList.Length; ++i)
                {
                    JObject archiveMessage      = archiveMessageList[i];
                    string  reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveMessage);
                    messageList[i].RawJson = reserializedMessage;
                }
            }

            // Two indexes are needed because YamsterReferenceJsonConverter discards unrecognized items
            // from envelope.References; we should probably fix that.
            for (int archiveIndex = 0, index = 0; ;)
            {
                if (archiveIndex >= untypedEnvelope.References.Length)
                {
                    break;
                }
                if (index >= envelope.References.Length)
                {
                    break;
                }

                var reference = envelope.References[index];

                JObject archiveReference   = untypedEnvelope.References[archiveIndex];
                long    archiveReferenceId = Convert.ToInt64(((JValue)archiveReference["id"]).Value);

                if (reference.Id == archiveReferenceId)
                {
                    string reserializedMessage = SQLiteJsonConverter.SaveToJson(archiveReference);
                    envelope.References[index].RawJson = reserializedMessage;
                    ++index;
                }
                ++archiveIndex;
            }
#if DEBUG
            foreach (var reference in envelope.References)
            {
                Debug.Assert(reference.RawJson != null);
            }
#endif
            return(envelope);
        }