예제 #1
0
void CGenNodeStateless::Dump(FILE *fd){
    fprintf(fd," %2.4f, %3lu, %s,%s, %3d, %s, %3lu, %3lu  \n",
            m_time,
            (ulong)m_port_id,
            "s-pkt", //action
            get_stream_state_str(m_state ).c_str(),
            get_stream_id(),   //stream_id
            TrexStream::get_stream_type_str(m_stream_type).c_str(), //stype
            (ulong)m_multi_bursts,
            (ulong)m_single_burst
            );
}
예제 #2
0
bool BackupSystem::file_has_changed(version_number_t &dst, FilishFso &new_file){
	dst = invalid_version_number;
	auto path = new_file.get_mapped_path();
	FileSystemObject *old_fso = nullptr;
	for (auto &fso : this->old_objects){
		auto found = fso->find(path);
		if (!found || found->is_directoryish())
			continue;
		old_fso = found;
		break;
	}
	if (!old_fso){
		new_file.compute_hash();
		return true;
	}
	zekvok_assert(old_fso);
	auto old_file = static_cast<FilishFso *>(old_fso);
	auto criterium = this->get_change_criterium(new_file);
	bool ret;
	switch (criterium){
		case ChangeCriterium::ArchiveFlag:
			ret = new_file.get_archive_flag();
			break;
		case ChangeCriterium::Size:
			ret = new_file.get_size() != old_file->get_size();
			break;
		case ChangeCriterium::Date:
			ret = new_file.get_modification_time() != old_file->get_modification_time();
			break;
		case ChangeCriterium::Hash:
			ret = compare_hashes(new_file, *old_file);
			break;
		case ChangeCriterium::HashAuto:
			ret = this->file_has_changed(new_file, *old_file);
			break;
		default:
			throw InvalidSwitchVariableException();
	}
	if (!ret){
		auto &hash = old_file->get_hash();
		if (hash.valid)
			new_file.set_hash(hash.digest);
		auto v = old_file->get_latest_version();
		new_file.set_latest_version(v);
		new_file.set_stream_id(old_file->get_stream_id());
		dst = v;
	}
	return ret;
}
예제 #3
0
static int stream_select (dtstream_context_t * stm_ctx)
{
    if (!g_stream)
        return -1;
    int id = get_stream_id(stm_ctx->stream_name);
    dt_info(TAG,"get stream id:%d \n",id);
    stream_wrapper_t *entry = g_stream;
    while(entry)
    {
        if(id == entry->id || STREAM_FFMPEG == entry->id)
            break;
        entry = entry->next;
    }
    if(!entry)
        return -1;
    stm_ctx->stream = entry;
    dt_info (TAG, "[%s:%d] select stream, name:%s id:%d \n", __FUNCTION__, __LINE__, entry->name, entry->id);
    return 0;
}