예제 #1
0
fileUntil::AppendFile::AppendFile(StringArg filename)
	: fp_(::fopen(filename.c_str(), "a+")),
	  writtenBytes_(0)
{
	assert(fp_);
	::setbuffer(fp_, buffer_, sizeof buffer_);
}
예제 #2
0
fileUntil::ReadSmallFile::ReadSmallFile(StringArg filename)
	: fd_(::open(filename.c_str(), O_RDONLY | O_CLOEXEC)),
	  err_(0)
{
	buf_[0] = '\0';

	if (fd_ < 0)
		err_ = errno;
}
예제 #3
0
bool Resolver::resolve(StringArg hostname, const Callback& cb){
    loop_->assertInLoopThread();
    QueryData* queryData = new QueryData(this, cb);
    ares_gethostbyname(ctx_, hostname.c_str(), AF_INET,
            &Resolver::ares_host_callback, queryData);
    struct timeval tv;
    struct timeval* tvp = ares_timeout(ctx_, NULL, &tv);
    double timeout = getSeconds(tvp);
    LOG_DEBUG << "timeout " << timeout << " active" << timerActive_;
    if(!timerActive_){
        loop_->runAfter(timeout, boost::bind(&Resolver::onTimer, this));
        timerActive_ = true;
    }
    return queryData != NULL;
}
예제 #4
0
void Request::setRange(const StringArg range){
    setopt(CURLOPT_RANGE, range.c_str());
}
예제 #5
0
RequestPtr Curl::getUrl(StringArg url){
    RequestPtr req(new Request(this, url.c_str()));
    return req;
}