示例#1
0
        private void HandleUpdateRequest(MongoUpdateMessage request)
        {
            _querySynchronizer.StartBlockingAction();
            try
            {
                var referenceBeforeChanges = MongoMessageHandler.GetChanges(request);
                SendRequestToServer(request);

                var checkErrorRequest = ReadClientRequest();
                if (checkErrorRequest.GetType() != typeof(MongoQueryMessage) &&
                    !MessageDataExtractor.IsHasErrorRequest(checkErrorRequest))
                {
                    //TODO: throw error. Und format
                }

                SendRequestToServer(checkErrorRequest);
                var hasErrorResponse = ReadServerResponse();

                if (!MessageDataExtractor.IsHasError(hasErrorResponse))
                {
                    var referenecesAfterChanges = MongoMessageHandler.GetChanges(request);
                    MongoMessageHandler.ApplyUpdateChanges(referenceBeforeChanges, referenecesAfterChanges);
                }

                SendResponseToClient(hasErrorResponse);

            }
            catch (Exception)
            {
                //TODO:
                throw;
            }
            finally
            {
                _querySynchronizer.StopBlockingAction();
            }
        }
示例#2
0
 public static List<ReferencePack> GetChanges(MongoUpdateMessage request)
 {
     return DataProviderFactory.GetDataProvider().Read( request.FullCollectionName, request.Selector );
 }