本文整理汇总了C++中Channel::GetOpenTime方法的典型用法代码示例。如果您正苦于以下问题:C++ Channel::GetOpenTime方法的具体用法?C++ Channel::GetOpenTime怎么用?C++ Channel::GetOpenTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Channel
的用法示例。
在下文中一共展示了Channel::GetOpenTime方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LibeventCleanCallback
void ZeroState::LibeventCleanCallback(int fd, short event, void *arg)
{
//fprintf(stderr,"zero clean: enter\n");
// Arno, 2012-02-24: Why-oh-why, update NOW
Channel::Time();
ZeroState *zs = (ZeroState *)arg;
if (zs == NULL)
return;
// See which zero state FileTransfers have no clients
tdlist_t tds = swift::GetTransferDescriptors();
tdlist_t::iterator iter;
tdlist_t delset;
for (iter = tds.begin(); iter != tds.end(); iter++)
{
int td = *iter;
if (!swift::IsZeroState(td))
continue;
ContentTransfer *ct = swift::GetActivatedTransfer(td);
if (ct == NULL)
{
// Not activated, so remove in any case
delset.push_back(td);
continue;
}
// Arno, 2012-09-20: Work with copy of list, as "delete c" edits list.
channels_t copychans(*ct->GetChannels());
if (copychans.size() == 0)
delset.push_back(td);
else if (zs->connect_timeout_ != TINT_NEVER)
{
// Garbage collect really slow connections, essential on Mac.
dprintf("%s zero clean %s has " PRISIZET " peers\n",tintstr(),ct->swarm_id().hex().c_str(), ct->GetChannels()->size() );
channels_t::iterator iter2;
for (iter2=copychans.begin(); iter2!=copychans.end(); iter2++) {
Channel *c = *iter2;
if (c != NULL)
{
//fprintf(stderr,"%s F%" PRIu32 " zero clean %s opentime %" PRIi64 " connect %" PRIi64 "\n",tintstr(),ft->fd(), c->peer().str().c_str(), (NOW-c->GetOpenTime()), zs->connect_timeout_ );
// Garbage collect copychans when open for long and slow upload
if ((NOW-c->GetOpenTime()) > zs->connect_timeout_)
{
//fprintf(stderr,"%s F%" PRIu32 " zero clean %s opentime %" PRIi64 " ulspeed %lf\n",tintstr(),ft->fd(), c->peer().str().c_str(), (NOW-c->GetOpenTime())/TINT_SEC, ft->GetCurrentSpeed(DDIR_UPLOAD) );
fprintf(stderr,"%s F%" PRIu32 " zero clean %s close slow channel\n",tintstr(),td, c->peer().str() .c_str());
dprintf("%s F%" PRIu32 " zero clean %s close slow channel\n",tintstr(),td, c->peer().str().c_str() );
c->Close(CLOSE_SEND_IF_ESTABLISHED);
delete c;
}
}
}
if (ct->GetChannels()->size() == 0)
{
// Ain't go no clients left, cleanup transfer.
delset.push_back(td);
}
}
}
// Delete 0-state FileTransfers sans peers
for (iter=delset.begin(); iter!=delset.end(); iter++)
{
int td = *iter;
dprintf("%s hash %s zero clean close\n",tintstr(),GetSwarmID(td).hex().c_str() );
//fprintf(stderr,"%s F%" PRIu32 " zero clean close\n",tintstr(),td );
swift::Close(td);
}
// Reschedule cleanup
evtimer_add(&(zs->evclean_),tint2tv(CLEANUP_INTERVAL*TINT_SEC));
}
示例2: LibeventCleanCallback
void ZeroState::LibeventCleanCallback(int fd, short event, void *arg)
{
//fprintf(stderr,"zero clean: enter\n");
// Arno, 2012-02-24: Why-oh-why, update NOW
Channel::Time();
ZeroState *zs = (ZeroState *)arg;
if (zs == NULL)
return;
// See which zero state FileTransfers have no clients
std::set<FileTransfer *> delset;
for(int i=0; i<FileTransfer::files.size(); i++)
{
FileTransfer *ft = FileTransfer::files[i];
if (ft == NULL)
continue;
if (!ft->IsZeroState())
continue;
// Arno, 2012-07-20: Some weirdness on Win7 when we use GetChannels()
// all the time. Map/set iterators incompatible?!
channels_t channels = ft->GetChannels();
if (channels.size() == 0)
{
// Ain't go no clients, cleanup transfer.
delset.insert(ft);
}
else if (zs->connect_timeout_ != TINT_NEVER)
{
// Garbage collect really slow connections, essential on Mac.
dprintf("%s zero clean %s has %d peers\n",tintstr(),ft->root_hash().hex().c_str(), ft->GetChannels().size() );
channels_t::iterator iter2;
for (iter2=channels.begin(); iter2!=channels.end(); iter2++) {
Channel *c = *iter2;
if (c != NULL)
{
//fprintf(stderr,"%s F%u zero clean %s opentime %lld connect %lld\n",tintstr(),ft->fd(), c->peer().str(), (NOW-c->GetOpenTime()), zs->connect_timeout_ );
// Garbage collect channels when open for long and slow upload
if ((NOW-c->GetOpenTime()) > zs->connect_timeout_)
{
//fprintf(stderr,"%s F%u zero clean %s opentime %lld ulspeed %lf\n",tintstr(),ft->fd(), c->peer().str(), (NOW-c->GetOpenTime())/TINT_SEC, ft->GetCurrentSpeed(DDIR_UPLOAD) );
fprintf(stderr,"%s F%u zero clean %s close slow channel\n",tintstr(),ft->fd(), c->peer().str() );
c->Close();
delete c;
}
}
}
if (ft->GetChannels().size() == 0)
{
// Ain't go no clients left, cleanup transfer.
delset.insert(ft);
}
}
}
// Delete 0-state FileTransfers sans peers
std::set<FileTransfer *>::iterator iter;
for (iter=delset.begin(); iter!=delset.end(); iter++)
{
FileTransfer *ft = *iter;
dprintf("%s F%u zero clean close\n",tintstr(),ft->fd() );
//fprintf(stderr,"%s F%u zero clean close\n",tintstr(),ft->fd() );
swift::Close(ft->fd());
}
// Reschedule cleanup
evtimer_add(&(zs->evclean_),tint2tv(CLEANUP_INTERVAL*TINT_SEC));
}