Эх сурвалжийг харах

Commit with whatever it was I was doing last

Billy Barrow 4 жил өмнө
parent
commit
07c4f6bd31

+ 5 - 0
src/lib/Protocols/STP/MessageRetransmitter.vala

@@ -0,0 +1,5 @@
+
+
+namespace LibPeer.Protocols.Stp {
+
+}

+ 3 - 1
src/lib/Protocols/STP/Messages/Message.vala

@@ -14,7 +14,9 @@ namespace LibPeer.Protocols.Stp.Messages {
             MemoryOutputStream buffer = new MemoryOutputStream(null, GLib.realloc, GLib.free);
             buffer.write({message_type});
             serialise_data(buffer);
-            stream.write(buffer.steal_data());
+            var primmy = buffer.steal_data();
+            primmy.length = (int)buffer.get_data_size();
+            stream.write(primmy);
         }
 
         protected abstract void serialise_data(OutputStream stream);

+ 1 - 1
src/lib/Protocols/STP/Messages/NegotiateSession.vala

@@ -25,7 +25,7 @@ namespace LibPeer.Protocols.Stp.Messages {
             os.put_byte ((uint8)feature_codes.length);
             os.write (feature_codes);
             os.put_uint64 (reply_timing);
-            os.put_uint64 (get_monotonic_time ());
+            os.put_uint64 (get_monotonic_time ()/1000);
             os.flush ();
         }
 

+ 1 - 1
src/lib/Protocols/STP/Messages/RequestSession.vala

@@ -25,7 +25,7 @@ namespace LibPeer.Protocols.Stp.Messages {
             os.write (in_reply_to.get_data());
             os.put_byte ((uint8)feature_codes.length);
             os.write (feature_codes);
-            os.put_uint64 (get_monotonic_time ());
+            os.put_uint64 (get_monotonic_time ()/1000);
             os.flush ();
         }
 

+ 5 - 0
src/lib/Protocols/STP/Messages/SegmentMessage.vala

@@ -10,6 +10,11 @@ namespace LibPeer.Protocols.Stp.Messages {
 
         public Segment segment { get; private set; }
 
+        public SegmentMessage(Bytes id, Segment segment) {
+            session_id = id;
+            this.segment = segment;
+        }
+
         protected override void serialise_data (OutputStream stream) {
             DataOutputStream os = new DataOutputStream (stream);
             os.byte_order = DataStreamByteOrder.BIG_ENDIAN;

+ 3 - 1
src/lib/Protocols/STP/Segments/Segment.vala

@@ -13,7 +13,9 @@ namespace LibPeer.Protocols.Stp.Segments {
             MemoryOutputStream buffer = new MemoryOutputStream(null, GLib.realloc, GLib.free);
             buffer.write({identifier});
             serialise_data(buffer);
-            stream.write(buffer.steal_data());
+            var primmy = buffer.steal_data();
+            primmy.length = (int)buffer.get_data_size();
+            stream.write(primmy);
         }
 
         protected abstract void serialise_data(OutputStream stream);

+ 1 - 0
src/lib/meson.build

@@ -36,6 +36,7 @@ sources += files('Protocols/MX2/PathStrategy.vala')
 sources += files('Protocols/STP/StreamTransmissionProtocol.vala')
 sources += files('Protocols/STP/Negotiation.vala')
 sources += files('Protocols/STP/Retransmitter.vala')
+sources += files('Protocols/STP/MessageRetransmitter.vala')
 sources += files('Protocols/STP/Sessions/Session.vala')
 sources += files('Protocols/STP/Sessions/IngressSession.vala')
 sources += files('Protocols/STP/Sessions/EgressSession.vala')

+ 1 - 1
src/toys/exponential_pinger/Main.vala

@@ -12,7 +12,7 @@ namespace ExponentialPinger {
 
             Pinger[] pingas = new Pinger[count];
             for (int i = 0; i < count; i++){
-                pingas[i] = new Pinger(conduit);
+                pingas[i] = new Pinger(i, conduit);
             }
 
             while(true) {};

+ 5 - 3
src/toys/exponential_pinger/Pinger.vala

@@ -12,8 +12,10 @@ namespace ExponentialPinger {
         private Network network;
         private Instance instance;
         private ConcurrentSet<InstanceReference> peers = new ConcurrentSet<InstanceReference>((a, b) => a.compare(b));
+        private int id;
 
-        public Pinger(Conduit conduit) throws Error, IOError {
+        public Pinger(int id, Conduit conduit) throws Error, IOError {
+            this.id = id;
             network = conduit.get_interface();
             network.bring_up();
             muxer.register_network(network);
@@ -24,7 +26,7 @@ namespace ExponentialPinger {
             network.incoming_advertisment.connect((adv) => rx_advertisement(adv));
 
             network.advertise(instance.reference);
-            print("A pinger has been spawned\n");
+            print(@"[$id] A pinger has been spawned\n");
         }
 
         private void rx_advertisement(Advertisement adv) throws Error, IOError {
@@ -43,7 +45,7 @@ namespace ExponentialPinger {
         private void rx_data(Packet packet) throws Error, IOError {
             peers.add(packet.origin);
             network.advertise(instance.reference);
-            print(@"RX DATA, I have $(peers.size) peers\n");
+            print(@"[$id] RX DATA, I have $(peers.size) peers\n");
 
             uint8[] data = new uint8[13];
             packet.stream.read(data);

+ 18 - 5
src/toys/give_file/GiveFile.vala

@@ -16,10 +16,12 @@ namespace GiveFile {
         private StreamTransmissionProtocol transport;
         private string path;
         private HashSet<InstanceReference> peers = new HashSet<InstanceReference>(r => r.hash(), (a, b) => a.compare(b) == 0);
+        private MainLoop loop;
 
         public FileGiver(Conduit conduit, string file_path) {
+            loop = new MainLoop();
             muxer = new Muxer ();
-            network = conduit.get_interface ();
+            network = conduit.get_interface (0, 0, 0.2f);
             network.bring_up ();
             muxer.register_network (network);
             instance = muxer.create_instance ("GiveFile");
@@ -63,9 +65,19 @@ namespace GiveFile {
             var size = reader.read_uint32();
             var file = File.new_for_path(Uuid.string_random());
             var file_stream = file.create(FileCreateFlags.PRIVATE);
-            uint8[] data = new uint8[size];
-            reader.read(data);
-            file_stream.write(data);
+            uint8[] hunk = new uint8[size/100];
+            int hunks_received = 0;
+            while(hunks_received < size/100) {
+                reader.read(hunk);
+                file_stream.write(hunk);
+                hunks_received++;
+                print(@"rx file $(hunks_received)% complete\n");
+            }
+            if(size%100 != 0) {
+                hunk = new uint8[size%100];
+                reader.read(hunk);
+                file_stream.write(hunk);
+            }
             file_stream.flush();
             file_stream.close();
 
@@ -84,7 +96,7 @@ namespace GiveFile {
                     return;
                 }
             }
-
+            print("Peer asked to gib file\n");
             transport.initialise_stream(stream.target, stream.session_id).established.connect(send_file);
         }
 
@@ -102,6 +114,7 @@ namespace GiveFile {
             file_stream.read(buffer);
             stream.write(buffer);
             file_stream.close();
+            print("My purpose is complete!\n");
         }
 
     }