コード例 #1
0
        /// <summary>
        /// Reads the next <see cref="ODataItem"/> from the message payload.
        /// </summary>
        /// <returns>true if more items were read; otherwise false.</returns>
        private bool ReadImplementation()
        {
            bool result;

            switch (this.State)
            {
            case ODataReaderState.Start:
                result = this.ReadAtStartImplementation();
                break;

            case ODataReaderState.FeedStart:
                result = this.ReadAtFeedStartImplementation();
                break;

            case ODataReaderState.FeedEnd:
                result = this.ReadAtFeedEndImplementation();
                break;

            case ODataReaderState.EntryStart:
                this.IncreaseEntryDepth();
                result = this.ReadAtEntryStartImplementation();
                break;

            case ODataReaderState.EntryEnd:
                this.DecreaseEntryDepth();
                result = this.ReadAtEntryEndImplementation();
                break;

            case ODataReaderState.NavigationLinkStart:
                result = this.ReadAtNavigationLinkStartImplementation();
                break;

            case ODataReaderState.NavigationLinkEnd:
                result = this.ReadAtNavigationLinkEndImplementation();
                break;

            case ODataReaderState.EntityReferenceLink:
                result = this.ReadAtEntityReferenceLink();
                break;

            case ODataReaderState.Exception:        // fall through
            case ODataReaderState.Completed:
                throw new ODataException(Strings.ODataReaderCore_NoReadCallsAllowed(this.State));

            default:
                Debug.Assert(false, "Unsupported reader state " + this.State + " detected.");
                throw new ODataException(Strings.General_InternalError(InternalErrorCodes.ODataReaderCore_ReadImplementation));
            }

            if ((this.State == ODataReaderState.EntryStart || this.State == ODataReaderState.EntryEnd) && this.Item != null)
            {
                ReaderValidationUtils.ValidateEntry(this.CurrentEntry);
            }

            return(result);
        }
コード例 #2
0
ファイル: ODataReaderCore.cs プロジェクト: modulexcite/pash-1
        private bool ReadImplementation()
        {
            bool flag;

            switch (this.State)
            {
            case ODataReaderState.Start:
                flag = this.ReadAtStartImplementation();
                break;

            case ODataReaderState.FeedStart:
                flag = this.ReadAtFeedStartImplementation();
                break;

            case ODataReaderState.FeedEnd:
                flag = this.ReadAtFeedEndImplementation();
                break;

            case ODataReaderState.EntryStart:
                this.IncreaseEntryDepth();
                flag = this.ReadAtEntryStartImplementation();
                break;

            case ODataReaderState.EntryEnd:
                this.DecreaseEntryDepth();
                flag = this.ReadAtEntryEndImplementation();
                break;

            case ODataReaderState.NavigationLinkStart:
                flag = this.ReadAtNavigationLinkStartImplementation();
                break;

            case ODataReaderState.NavigationLinkEnd:
                flag = this.ReadAtNavigationLinkEndImplementation();
                break;

            case ODataReaderState.EntityReferenceLink:
                flag = this.ReadAtEntityReferenceLink();
                break;

            case ODataReaderState.Exception:
            case ODataReaderState.Completed:
                throw new ODataException(Microsoft.Data.OData.Strings.ODataReaderCore_NoReadCallsAllowed(this.State));

            default:
                throw new ODataException(Microsoft.Data.OData.Strings.General_InternalError(InternalErrorCodes.ODataReaderCore_ReadImplementation));
            }
            if (((this.State == ODataReaderState.EntryStart) || (this.State == ODataReaderState.EntryEnd)) && (this.Item != null))
            {
                ReaderValidationUtils.ValidateEntry(this.CurrentEntry);
            }
            return(flag);
        }
コード例 #3
0
        protected override Task <bool> ReadAsynchronously()
        {
            Task <bool> result;

            switch (this.State)
            {
            case ODataReaderState.Start:
                result = this.ReadAtStartImplementationAsync();
                break;

            case ODataReaderState.FeedStart:
                result = this.ReadAtFeedStartImplementationAsync();
                break;

            case ODataReaderState.FeedEnd:
                result = this.ReadAtFeedEndImplementationAsync();
                break;

            case ODataReaderState.EntryStart:
                result = TaskUtils.GetTaskForSynchronousOperation(() => this.IncreaseEntryDepth())
                         .FollowOnSuccessWithTask(t => this.ReadAtEntryStartImplementationAsync());
                break;

            case ODataReaderState.EntryEnd:
                result = TaskUtils.GetTaskForSynchronousOperation(() => this.DecreaseEntryDepth())
                         .FollowOnSuccessWithTask(t => this.ReadAtEntryEndImplementationAsync());
                break;

            case ODataReaderState.NavigationLinkStart:
                result = this.ReadAtNavigationLinkStartImplementationAsync();
                break;

            case ODataReaderState.NavigationLinkEnd:
                result = this.ReadAtNavigationLinkEndImplementationAsync();
                break;

            case ODataReaderState.EntityReferenceLink:
                result = this.ReadAtEntityReferenceLinkAsync();
                break;

            case ODataReaderState.Exception:        // fall through
            case ODataReaderState.Completed:
                result = TaskUtils.GetFaultedTask <bool>(new ODataException(Strings.ODataReaderCore_NoReadCallsAllowed(this.State)));
                break;

            default:
                Debug.Assert(false, "Unsupported reader state " + this.State + " detected.");
                result = TaskUtils.GetFaultedTask <bool>(new ODataException(Strings.General_InternalError(InternalErrorCodes.ODataReaderCoreAsync_ReadAsynchronously)));
                break;
            }

            return(result.FollowOnSuccessWith(t =>
            {
                if ((this.State == ODataReaderState.EntryStart || this.State == ODataReaderState.EntryEnd) && this.Item != null)
                {
                    ReaderValidationUtils.ValidateEntry(this.CurrentEntry);
                }

                return t.Result;
            }));
        }