add .gitignore
[swift-upb.git] / transfer.cpp
index a67a61b..ad121f3 100644 (file)
@@ -40,15 +40,25 @@ void    Channel::CloseTransfer (FileTransfer* trans) {
 }
 
 
-void swift::AddProgressCallback (int transfer, TransferProgressCallback cb) {
+void swift::AddProgressCallback (int transfer,ProgressCallback cb,uint8_t agg) {
     FileTransfer* trans = FileTransfer::file(transfer);
     if (!trans)
         return;
-    trans->callbacks[trans->cb_installed++] = cb;
+    trans->cb_agg[trans->cb_installed] = agg;
+    trans->callbacks[trans->cb_installed] = cb;
+    trans->cb_installed++;
 }
 
 
-void swift::RemoveProgressCallback (int transfer, TransferProgressCallback cb) {
+void swift::ExternallyRetrieved (int transfer,bin64_t piece) {
+    FileTransfer* trans = FileTransfer::file(transfer);
+    if (!trans)
+        return;
+    trans->ack_out().set(piece); // that easy
+}
+
+
+void swift::RemoveProgressCallback (int transfer, ProgressCallback cb) {
     FileTransfer* trans = FileTransfer::file(transfer);
     if (!trans)
         return;
@@ -90,7 +100,7 @@ void            FileTransfer::OnPexIn (const Address& addr) {
             return; // already connected
     }
     if (hs_in_.size()<20) {
-        new Channel(this,Channel::default_socket(),addr);
+        new Channel(this,Datagram::default_socket(),addr);
     } else {
         pex_in_.push_back(addr);
         if (pex_in_.size()>1000)