}
-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;
}
+int swift:: Find (Sha1Hash hash) {
+ FileTransfer* t = FileTransfer::Find(hash);
+ if (t)
+ return t->fd();
+ return -1;
+}
+
+
+
void FileTransfer::OnPexIn (const Address& addr) {
for(int i=0; i<hs_in_.size(); i++) {
Channel* c = Channel::channel(hs_in_[i]);
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)