当前位置: 首页>>代码示例>>C++>>正文


C++ Channel::GetOpenTime方法代码示例

本文整理汇总了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));
}
开发者ID:JuanCabre,项目名称:libswift,代码行数:76,代码来源:zerostate.cpp

示例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));
}
开发者ID:Devristo,项目名称:libswift,代码行数:71,代码来源:zerostate.cpp


注:本文中的Channel::GetOpenTime方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。