Network.vala 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using LibPeer.Protocols.Mx2;
  2. namespace LibPeer.Networks {
  3. public abstract class Network {
  4. public abstract Bytes get_network_identifier();
  5. public abstract uint16 get_mtu();
  6. public signal void incoming_advertisment(Advertisement advertisement);
  7. public signal void incoming_receiption(Receiption receiption);
  8. public abstract void bring_up() throws IOError, Error;
  9. public abstract void bring_down() throws IOError, Error;
  10. public abstract void advertise(InstanceReference instance_reference) throws IOError, Error;
  11. public abstract void send(uint8[] bytes, PeerInfo peer_info) throws IOError, Error;
  12. public void send_with_stream(PeerInfo peer_info, Serialiser serialiser) throws IOError, Error {
  13. MemoryOutputStream stream = new MemoryOutputStream(null, GLib.realloc, GLib.free);
  14. serialiser(stream);
  15. stream.close();
  16. uint8[] buffer = stream.steal_data();
  17. buffer.length = (int)stream.get_data_size();
  18. send(buffer, peer_info);
  19. }
  20. }
  21. public delegate void Serialiser(OutputStream stream) throws IOError, Error;
  22. }