/// <summary> /// Assembles the StreamMetadataBody object from byte array /// </summary> /// <param name="reader">BinaryReader to deserialize from</param> /// <returns>StreamMetadataBody object</returns> public StreamMetadataBody Read(BinaryReader reader) { var metadataKind = (StreamMetadataKind)reader.ReadInt32(); StreamMetadataBody result = null; switch (metadataKind) { case StreamMetadataKind.ReceiveSequenceNumber: case StreamMetadataKind.SendSequenceNumber: case StreamMetadataKind.DeleteSequenceNumber: result = StreamSequenceNumber.FromByteArray(reader); break; case StreamMetadataKind.OutboundStableParameters: result = OutboundStreamStableParameters.FromByteArray(reader); break; case StreamMetadataKind.InboundStableParameters: result = InboundStreamStableParameters.FromByteArray(reader); break; default: Diagnostics.Assert(false, "Unknown Stream MetadataKind in StreamMetadataBody.FromByteArray()"); break; } return(result); }
/// <summary> /// Copy constructor used for updates to avoid in memory update that would change "committed" state in the store before commit /// especially when the object is acquired through Get /// </summary> /// <param name="stableParameters"></param> internal InboundStreamStableParameters(InboundStreamStableParameters stableParameters) { this.InitializeBaseParameters( StreamMetadataKind.InboundStableParameters, stableParameters.StreamName, stableParameters.PartnerId, stableParameters.CurrentState, stableParameters.CloseMessageSequenceNumber); }
/// <summary> /// Assembles the OutboundStreamStableParameters object from byte array /// </summary> /// <param name="reader">BinaryReader to deserialize from</param> /// <returns>OutboundStreamStableParameters object</returns> public static InboundStreamStableParameters FromByteArray(BinaryReader reader) { var result = new InboundStreamStableParameters(); result.ReadBaseParameters(reader); Diagnostics.Assert( result.MetadataKind == StreamMetadataKind.InboundStableParameters, "Unexpected StreamMetadataType when decoding InboundStreamStableParameters.FromByteArray"); return(result); }
/// <summary> /// Converts the InboundStreamStableParameters to byte array /// </summary> /// <returns>Byte array</returns> public void ToByteArray(InboundStreamStableParameters value, BinaryWriter writer) { try { value.WriteBaseParameters(writer); } catch (Exception e) { Tracing.WriteExceptionAsError("InboundStreamStableParameters.ToByteArray", e, "Content: {0}", this); } }