Exemplo n.º 1
0
        protected override MemoryStream GetRequestContent(IResourceManager resourceManager)
        {
            ValidateBodyParameters();

            PutChunkedFileRequestMessage putChunkedFileRequestMessage = BuildPutChunkedFileRequestMessageAndDeltaBlobs(resourceManager, out Dictionary <string, IBlob> deltaBlobs);

            FrameProtocolBuilder builder = BuildMessageAndChunkFrames(putChunkedFileRequestMessage, deltaBlobs);
            // This will add EndFrame and create stream
            MemoryStream outputMemoryStream = (MemoryStream)builder.CreateStream();

            return(outputMemoryStream);
        }
Exemplo n.º 2
0
        private FrameProtocolBuilder BuildMessageAndChunkFrames(
            PutChunkedFileRequestMessage putChunkedFileRequestMessage,
            Dictionary <string, IBlob> deltaBlobs)
        {
            FrameProtocolBuilder builder = new FrameProtocolBuilder();

            builder.AddFrame(putChunkedFileRequestMessage);

            // Concat multi-stream blobs together into a frame list
            foreach (IBlob blob in deltaBlobs.Values)
            {
                builder.AddFrame(blob);
            }

            return(builder);
        }
        public void SerializePutChunkedFileRequestMessage()
        {
            PutChunkedFileRequestMessage request = new PutChunkedFileRequestMessage();
            ContentProperty contentProperty1     = new ContentProperty();

            contentProperty1.Name      = "Prop1";
            contentProperty1.Value     = "TestValue";
            contentProperty1.Retention = ContentPropertyRetention.KeepOnContentChange.ToString();

            ContentProperty contentProperty2 = new ContentProperty();

            contentProperty2.Name      = "last ocs save";
            contentProperty2.Value     = "TestValue2";
            contentProperty2.Retention = ContentPropertyRetention.DeleteOnContentChange.ToString();

            request.ContentProperties = new ContentProperty[] { contentProperty1, contentProperty2 };

            ChunkSignature chunk1 = new ChunkSignature();

            chunk1.ChunkId = "Chunk1";
            chunk1.Length  = 334;

            ChunkSignature chunk2 = new ChunkSignature();

            chunk2.ChunkId = "Chunk2";
            chunk2.Length  = 111334;

            ChunkSignature chunk3 = new ChunkSignature();

            chunk3.ChunkId = "Chunk3";
            chunk3.Length  = 4;

            ChunkSignature chunk4 = new ChunkSignature();

            chunk4.ChunkId = "Chunk4";
            chunk4.Length  = 554;


            StreamSignature signature = new StreamSignature();

            signature.ChunkingScheme  = ChunkingScheme.FullFile.ToString();
            signature.StreamId        = "AlternateStream1";
            signature.ChunkSignatures = new ChunkSignature[4] {
                chunk1, chunk2, chunk3, chunk4
            };
            StreamSignature[] streamSignatures = new StreamSignature[1] {
                signature
            };

            request.Signatures = streamSignatures;

            request.UploadSessionTokenToCommit = "3DFCF2D5 - DABA - 4BDD - 88EC - 69823EDCF585";

            using (MemoryStream ms = new MemoryStream())
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(PutChunkedFileRequestMessage));
                ser.WriteObject(ms, request);
                ms.Seek(0, SeekOrigin.Begin);
                PutChunkedFileRequestMessage requestNew = (PutChunkedFileRequestMessage)ser.ReadObject(ms);

                // Assert
                Assert.AreEqual(request.ToString(), requestNew.ToString());
            }
        }