void ClientManage::operator()(){ while(is_burn_){ OutputStream(); Execute(); InputStream(); boost::xtime time; time.sec = 0; time.nsec = 10; boost::thread::sleep(time); } }
FCFileHandlerBase::FCPtrStore FCFileHandlerBase::read(const BoostPath& FilePath) { FCPtrStore Result; //Determine if the file exists if(!boost::filesystem::exists(FilePath)) { SWARNING << "FCFileHandlerBase::read(): " << FilePath.string() << " does not exists." << std::endl; return Result; } std::string filename = initPathHandler(FilePath.string().c_str()); //Determine the file extension std::string Extension(boost::filesystem::extension(FilePath)); boost::algorithm::trim_if(Extension,boost::is_any_of(".")); //Get the Parent Directory Path of the file _RootFilePath = FilePath; _RootFilePath.remove_leaf(); //Get the FileType for this extension FCFileTypeP TheFileType(getFileType(Extension, FCFileType::OSG_READ_SUPPORTED)); //Is that extension supported for reading if(TheFileType == NULL) { SWARNING << "FCFileHandlerBase::read(): Cannot read Field Container file: " << FilePath.string() << ", because no File types support " << Extension << " extension." << std::endl; return Result; } else { //Open up the input stream of the file std::ifstream InputStream(FilePath.string().c_str(), std::ios::binary); if(!InputStream) { SWARNING << "FCFileHandlerBase::read(): Couldn't open input stream for file " << FilePath.string() << std::endl; return Result; } else { //Read from the input stream startReadProgressThread(InputStream); Result = TheFileType->read(InputStream, FilePath.string()); stopReadProgressThread(); InputStream.close(); } } return Result; }
TableDOMTransitPtr TableFileHandlerBase::forceRead(const BoostPath& FilePath) { TableDOMRefPtr Result; //Determine if the file exists if(!boost::filesystem::exists(FilePath)) { SWARNING << "TableFileHandlerBase::read(): " << FilePath.string() << " does not exists." << std::endl; return TableDOMTransitPtr(NULL); } //Determine the file extension std::string Extension(boost::filesystem::extension(FilePath)); boost::algorithm::trim_if(Extension,boost::is_any_of(".")); //Get the Parent Directory Path of the file _RootFilePath = FilePath; _RootFilePath.remove_leaf(); //Get the FileType of a "txt" file (Forcing the document to be opened as a txt file) TableFileTypeP TheFileType(getFileType("csv", TableFileType::OSG_READ_SUPPORTED)); //Is that extension supported for reading if(TheFileType == NULL) { SWARNING << "TableFileHandlerBase::read(): Cannot read Field Container file: " << FilePath.string() << ", because no File types support " << Extension << " extension." << std::endl; return TableDOMTransitPtr(NULL); } else { //Open up the input stream of the file std::ifstream InputStream(FilePath.string().c_str(), std::ios::binary); if(!InputStream) { SWARNING << "TableFileHandlerBase::read(): Couldn't open input stream for file " << FilePath.string() << std::endl; return TableDOMTransitPtr(NULL); } else { //Read from the input stream startReadProgressThread(InputStream); Result = TheFileType->read(InputStream, FilePath.string()); stopReadProgressThread(); InputStream.close(); } } return TableDOMTransitPtr(Result); }
TError TClient::ReadRequest(rpc::TContainerRequest &request) { if (config().daemon().blocking_read()) { InterruptibleInputStream InputStream(Fd); ReadDelimitedFrom(&InputStream, &request); return TError::Success(); } if (Offset >= Buffer.size()) Buffer.resize(Offset + 4096); ssize_t len = recv(Fd, &Buffer[Offset], Buffer.size() - Offset, MSG_DONTWAIT); if (len > 0) Offset += len; else if (len == 0 || (errno != EAGAIN && errno != EWOULDBLOCK)) return TError(EError::Unknown, len ? errno : EIO, "recv request failed"); if (Length && Offset < Length) return TError::Queued(); google::protobuf::io::CodedInputStream input(&Buffer[0], Offset); uint32_t length; if (!input.ReadVarint32(&length)) return TError::Queued(); if (!Length) { if (length > config().daemon().max_msg_len()) return TError(EError::Unknown, "oversized request: " + std::to_string(length)); Length = length + google::protobuf::io::CodedOutputStream::VarintSize32(length); if (Buffer.size() < Length) Buffer.resize(Length); if (Offset < Length) return TError::Queued(); } if (!request.ParseFromCodedStream(&input)) return TError(EError::Unknown, "cannot parse request"); if (Offset > Length) return TError(EError::Unknown, "garbage after request"); return EpollLoop->StopInput(Fd); }