void EventHandlerBasic::event(ps_decoder_t* decoder) { char const* message = ps_get_hyp( decoder, NULL ); if( mCb != nullptr && message != NULL && strlen( message ) > 0 ) mCb( std::string( message ) ); }
void DiskManager::ScanRequest::execute() { std::tr1::shared_ptr<DirectoryListing> badResult; std::tr1::shared_ptr<DirectoryListing> dirListing(new DirectoryListing()); if(!fs::exists(mPath)) { mCb(badResult); return; } for(fs::directory_iterator it(mPath); it != fs::directory_iterator(); it++) { Filesystem::PathInfo pi(it->path(), it->status()); dirListing->push_back(pi); } mCb(dirListing); }
void DiskManager::ReadRequest::execute() { std::tr1::shared_ptr<DenseData> badResult; if(!fs::exists(mPath)) { SILOG(transfer, warn, "File '" << mPath.file_string() << "' didn't exist in ReadRequest."); mCb(badResult); return; } if(!fs::is_regular_file(mPath)) { SILOG(transfer, warn, "File '" << mPath.file_string() << "' was not a regular file in ReadRequest."); mCb(badResult); return; } fs::ifstream file(mPath, fs::ifstream::in | fs::ifstream::binary); if(!file.is_open()) { SILOG(transfer, warn, "File '" << mPath.file_string() << "' was not open in ReadRequest."); mCb(badResult); return; } std::tr1::shared_ptr<DenseData> fileContents(new DenseData(Range(true))); char buff[5000]; while(file.good()) { file.read(buff, 5000); if(file.fail() && file.eof() && !file.bad()) { //Read past EoF, so clear the fail bit file.clear(std::ios::goodbit | std::ios::eofbit); } if(file.gcount() > 0) { fileContents->append(buff, file.gcount(), true); } } if(file.bad() || file.fail()) { SILOG(transfer, warn, "File '" << mPath.file_string() << "' got error while reading in ReadRequest."); mCb(badResult); return; } file.close(); mCb(fileContents); }
void EventHandlerSegment::event(ps_decoder_t* decoder) { std::vector<std::string> segments; ps_seg_t* iter = ps_seg_iter( decoder, NULL ); while( iter != NULL ) { segments.push_back( std::string( ps_seg_word( iter ) ) ); iter = ps_seg_next( iter ); } if( ! segments.empty() ) mCb( segments ); }
void DiskManager::WriteRequest::execute() { if(!mFileContents) { mCb(false); return; } fs::ofstream file(mPath, fs::ofstream::out | fs::ofstream::binary); if(!file.is_open() || !file.good()) { mCb(false); return; } file.write((const char *)mFileContents->data(), mFileContents->length()); if(file.bad() || file.fail()) { mCb(false); return; } file.close(); mCb(true); }
void EventHandlerSegmentConfidence::event(ps_decoder_t *decoder) { std::vector<std::pair<std::string,float> > segments; ps_seg_t* iter = ps_seg_iter( decoder, NULL ); while( iter != NULL ) { int32 prob = ps_seg_prob( iter, NULL, NULL, NULL ); segments.push_back( { std::string( ps_seg_word( iter ) ), logmath_exp( ps_get_logmath( decoder ), prob ) } ); iter = ps_seg_next( iter ); } if( ! segments.empty() ) mCb( segments ); }