int swift::Find(SwarmID& swarmid, bool activate) { if (api_debug) fprintf(stderr,"swift::Find %s act %d\n", swarmid.hex().c_str(), (int)activate ); if (swarmid.ttype() == FILE_TRANSFER) { SwarmData* swarm = SwarmManager::GetManager().FindSwarm(swarmid.roothash()); if (swarm==NULL) return -1; else { if (activate) SwarmManager::GetManager().ActivateSwarm(swarm->RootHash()); return swarm->Id(); } } else { //LIVE LiveTransfer *lt = LiveTransfer::FindBySwarmID(swarmid); if (lt == NULL) return -1; else return lt->td(); } }
void swift::AddPeer(Address& addr, SwarmID& swarmid) { if (api_debug) fprintf(stderr,"swift::AddPeer addr %s hash %s\n", addr.str().c_str(), swarmid.hex().c_str() ); ContentTransfer *ct = NULL; if (swarmid.ttype() == FILE_TRANSFER) { SwarmData* swarm = SwarmManager::GetManager().FindSwarm(swarmid.roothash()); if (swarm == NULL) return; else { if (!swarm->Touch()) { swarm = SwarmManager::GetManager().ActivateSwarm(swarmid.roothash()); if (swarm == NULL) return; if (!swarm->Touch()) return; } ct = (ContentTransfer *)swarm->GetTransfer(); } } else ct = (ContentTransfer *)LiveTransfer::FindBySwarmID(swarmid); if (ct == NULL) return; else ct->AddPeer(addr); // FIXME: When cached addresses are supported in swapped-out swarms, add the peer to that cache instead }
int swift::Open( std::string filename, SwarmID& swarmid, std::string trackerurl, bool force_check_diskvshash, popt_cont_int_prot_t cipm, bool zerostate, bool activate, uint32_t chunk_size) { if (api_debug) fprintf(stderr,"swift::Open %s id %s track %s cdisk %d cipm %u zs %d act %d cs %u\n", filename.c_str(), swarmid.hex().c_str(), trackerurl.c_str(), force_check_diskvshash, cipm, zerostate, activate, chunk_size ); if (swarmid.ttype() != FILE_TRANSFER) return -1; SwarmData* swarm = SwarmManager::GetManager().AddSwarm( filename, swarmid.roothash(), trackerurl, force_check_diskvshash, cipm, zerostate, activate, chunk_size ); if (swarm == NULL) return -1; else return swarm->Id(); }