Upload.vala 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Invercargill;
  2. namespace Pprf.Messages {
  3. public class Upload : UploadSessionMessage {
  4. public uint64 offset { get; set; }
  5. public MessageBody upload_chunk { get; set; }
  6. public Upload() {
  7. message_type = MessageType.UPLOAD;
  8. }
  9. public override void deserialise (GLib.DataInputStream stream) throws Error {
  10. base.deserialise (stream);
  11. offset = stream.read_uint64();
  12. // Size of message minus headers
  13. var chunk_size = stream.read_uint64();
  14. upload_chunk = new StreamMessageBody((int)chunk_size, stream);
  15. }
  16. public override uint64 calculate_size() {
  17. return base.calculate_size() +
  18. 8 + // Offset field
  19. 8 + // Chunk size field
  20. upload_chunk.body_size;
  21. }
  22. public override void serialise(DataOutputStream stream) throws Error {
  23. base.serialise(stream);
  24. stream.put_uint64(offset);
  25. stream.put_uint64(upload_chunk.body_size);
  26. upload_chunk.write_to(stream);
  27. stream.flush();
  28. }
  29. }
  30. }