Exemplo n.º 1
0
            private async Task SerializeBuffered(OeEntryFactory entryFactory, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream)
            {
                var values = new List <Object>();

                while (await asyncEnumerator.MoveNextAsync().ConfigureAwait(false))
                {
                    values.Add(asyncEnumerator.Current);
                }

                var resourceSet = new ODataResourceSet();

                resourceSet.Count = values.Count;
                Writer.WriteStart(resourceSet);

                foreach (Object value in values)
                {
                    int?          dummy;
                    ODataResource entry = CreateEntry(entryFactory, entryFactory.GetValue(value, out dummy));
                    Writer.WriteStart(entry);
                    foreach (OeEntryFactory navigationLink in entryFactory.NavigationLinks)
                    {
                        WriteNavigationLink(value, navigationLink);
                    }
                    Writer.WriteEnd();
                }

                Writer.WriteEnd();
            }
Exemplo n.º 2
0
 public async Task SerializeAsync(OeEntryFactory entryFactory, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream)
 {
     if (entryFactory.CountOption.GetValueOrDefault())
     {
         await SerializeBuffered(entryFactory, asyncEnumerator, stream);
     }
     else
     {
         await SerializeUnbuffered(entryFactory, asyncEnumerator, stream);
     }
 }
Exemplo n.º 3
0
            private async Task SerializeUnbuffered(OeEntryFactory entryFactory, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream)
            {
                Writer.WriteStart(new ODataResourceSet());

                while (await asyncEnumerator.MoveNextAsync().ConfigureAwait(false))
                {
                    Object        value = asyncEnumerator.Current;
                    int?          dummy;
                    ODataResource entry = CreateEntry(entryFactory, entryFactory.GetValue(value, out dummy));
                    Writer.WriteStart(entry);
                    foreach (OeEntryFactory navigationLink in entryFactory.NavigationLinks)
                    {
                        WriteNavigationLink(value, navigationLink);
                    }
                    Writer.WriteEnd();
                }

                Writer.WriteEnd();
            }
Exemplo n.º 4
0
            public async Task SerializeAsync(OeEntryFactory entryFactory, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream, long?count)
            {
                ODataResourceSet oDataResourceSet = new ODataResourceSet();

                oDataResourceSet.Count = count;
                Writer.WriteStart(oDataResourceSet);
                while (await asyncEnumerator.MoveNextAsync().ConfigureAwait(false))
                {
                    Object        value = asyncEnumerator.Current;
                    ODataResource entry = CreateEntry(entryFactory, entryFactory.GetValue(value));
                    Writer.WriteStart(entry);
                    foreach (OeEntryFactory navigationLink in entryFactory.NavigationLinks)
                    {
                        WriteNavigationLink(value, navigationLink);
                    }
                    Writer.WriteEnd();
                }
                Writer.WriteEnd();
            }
Exemplo n.º 5
0
        public static async Task SerializeAsync(Uri baseUri, OeParseUriContext parseUriContext, Db.OeEntityAsyncEnumerator asyncEnumerator, Stream stream)
        {
            IEdmModel      edmModel     = parseUriContext.EdmModel;
            OeEntryFactory entryFactory = parseUriContext.EntryFactory;
            String         contentType  = parseUriContext.Headers.ContentType;

            var settings = new ODataMessageWriterSettings()
            {
                BaseUri = baseUri,
                EnableMessageStreamDisposal = false,
                ODataUri    = parseUriContext.ODataUri,
                Validations = ValidationKinds.ThrowIfTypeConflictsWithMetadata | ValidationKinds.ThrowOnDuplicatePropertyNames,
                Version     = ODataVersion.V4
            };

            IODataResponseMessage responseMessage = new OeInMemoryMessage(stream, contentType);

            using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, edmModel))
            {
                ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.ResourceSet);
                ODataWriter writer    = messageWriter.CreateODataResourceSetWriter(entryFactory.EntitySet, entryFactory.EntityType);
                var         getWriter = new GetWriter(baseUri, parseUriContext.Headers.MetadataLevel, writer);
                await getWriter.SerializeAsync(entryFactory, asyncEnumerator, stream);
            }
        }