TSystems.RELOAD.Transport.FetchAns.Dump C# (CSharp) Method

Dump() public method

public Dump ( BinaryWriter writer ) : uint
writer System.IO.BinaryWriter
return uint
        public override uint Dump(BinaryWriter writer)
        {

            UInt32 length = 0;
            UInt32 kind_responses_length = 0;
            /* Before writing the message body the message_code is sufficiant */
            writer.Write(IPAddress.HostToNetworkOrder(
              (short)RELOAD_MessageCode.Fetch_Answer));
            /* Placeholder for length, which will be filled on return */
            writer.Write(IPAddress.HostToNetworkOrder((int)length));

            /* Placeholder for length of all FetchKindResponses
             * FetchKindResponse      kind_responses<0..2^32-1>;
             */
            long posBeforeResp = writer.BaseStream.Position;
            writer.Write(IPAddress.HostToNetworkOrder((int)kind_responses_length));
            /* length itself */

            foreach (FetchKindResponse kind_response in kind_responses)
            {
                writer.Write(IPAddress.HostToNetworkOrder(
                  (int)kind_response.kind));
                writer.Write(IPAddress.HostToNetworkOrder(
                  (long)kind_response.generation));
                /* Placeholder for write length of the values
                 * StoredData             values<0..2^32-1>;
                 */
                long posBeforeSDs = writer.BaseStream.Position;
                writer.Write(IPAddress.HostToNetworkOrder((int)0));
                foreach (StoredData stored_data in kind_response.values)
                {
                    long posBeforeSD = writer.BaseStream.Position;
                    writer.Write(IPAddress.HostToNetworkOrder(0));
                    writer.Write(IPAddress.HostToNetworkOrder(
                      (long)stored_data.StoreageTime));
                    writer.Write(IPAddress.HostToNetworkOrder(
                      (int)stored_data.LifeTime));
                    // Write StoredDataValue meta data
                    stored_data.Value.Dump(writer);
                    // Write Usage data
                    stored_data.Value.GetUsageValue.dump(writer);
                    // Write the Signature
                    stored_data.Signature.Dump(writer);
                    //TODO stored_data.Signature.Dump(writer);
                    StreamUtil.WrittenBytesExcludeLength(posBeforeSD, writer);
                }
                StreamUtil.WrittenBytesExcludeLength(posBeforeSDs, writer);
            }
            StreamUtil.WrittenBytesExcludeLength(posBeforeResp, writer);
            return length;
        }