InstanceInformation.vala 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using LibPeer.Protocols.Mx2;
  2. using LibPeer.Networks;
  3. namespace LibPeer.Protocols.Aip {
  4. internal class InstanceInformation {
  5. public InstanceReference instance_reference { get; private set; }
  6. public PeerInfo[] connection_methods { get; private set; }
  7. public InstanceInformation(InstanceReference instance, PeerInfo[] methods) {
  8. instance_reference = instance;
  9. connection_methods = methods;
  10. }
  11. public void serialise(OutputStream stream) throws IOError, Error {
  12. var dos = new DataOutputStream(stream);
  13. dos.byte_order = DataStreamByteOrder.BIG_ENDIAN;
  14. // Write instance reference
  15. instance_reference.serialise(dos);
  16. // Write number of connection methods
  17. dos.put_byte((uint8)connection_methods.length);
  18. // Write connection methods
  19. foreach (var method in connection_methods) {
  20. method.serialise(dos);
  21. }
  22. }
  23. public InstanceInformation.from_stream(InputStream stream) throws IOError, Error {
  24. var dis = new DataInputStream(stream);
  25. dis.byte_order = DataStreamByteOrder.BIG_ENDIAN;
  26. // Read the instance reference
  27. instance_reference = new InstanceReference.from_stream(dis);
  28. // Read number of connection methods
  29. var method_count = dis.read_byte();
  30. // Read conneciton methods
  31. connection_methods = new PeerInfo[method_count];
  32. for (int i = 0; i < method_count; i++) {
  33. connection_methods[i] = PeerInfo.deserialise(stream);
  34. }
  35. }
  36. }
  37. }