// ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** // manual class headers #include "PrtCnvMember.hpp" #include namespace PrtCnv { // --------------------------------------------------------------- // Constructor with id and ISSI as parameter // --------------------------------------------------------------- PrtCnvMember::PrtCnvMember(int a_id, int a_issi) : m_ISSI(a_issi) , m_ClaimCount(0) , m_loggedInExerciseId(0) , m_Id(a_id) , m_Licensed(false) {} PrtCnvMember::~PrtCnvMember() { clearFragmentedList(); } // --------------------------------------------------------------- // Adds a radio-telegram-fragment to this member. // --------------------------------------------------------------- void PrtCnvMember::addFragmentedTelegram(const N_CoPrtCnv::CoPrtCnvRadioTelegram &a_radioTelegram) { m_FragmentedTelegramList.insert(std::make_pair(a_radioTelegram.getFragmentCounter(), new N_CoPrtCnv::CoPrtCnvRadioTelegram(a_radioTelegram))); } // --------------------------------------------------------------- // Returns the telegram-Id of the fragmented telegram assiged // to this member. // If not evaluable: 0 will be returned. // --------------------------------------------------------------- gef_telegramm_id_et PrtCnvMember::getFragmentedTelegramId() const { // the fragment with the highest counter is the first fragment for (auto rit = m_FragmentedTelegramList.rbegin(); rit != m_FragmentedTelegramList.rend(); ++rit) { N_CoPrtCnv::CoPrtCnvRadioTelegram *firstFragment = rit->second; if (N_CoPrtCnv::CoPrtCnvRadioTelegram::e_FirstFragment == firstFragment->getFragmentStatus()) return firstFragment->getTelID(); } return GEF_BESTAETIGUNG; // no telegram found => return 0 (= GEF_BESTAETIGUNG) } // --------------------------------------------------------------- // Erases the radio-telegram-fragments assiged to this member. // The fragments itself will be deleted. // --------------------------------------------------------------- void PrtCnvMember::clearFragmentedList() { for (auto it : m_FragmentedTelegramList) delete it.second; m_FragmentedTelegramList.clear(); } // --------------------------------------------------------------- // Returns the radio-telegram-fragments assembled to a only // big radio-telegram. The fragments will not be deleted. // Returns NULL if it was impossible to assemble the telegram. // --------------------------------------------------------------- QByteArray PrtCnvMember::getUnfragmentedTelegramData() const { return N_CoPrtCnv::CoPrtCnvRadioTelegram::getUnfragmentedData(m_FragmentedTelegramList); } // --------------------------------------------------------------- // Returns true if the fragment-list is empty // --------------------------------------------------------------- bool PrtCnvMember::isFragmentedListEmpty() const { return m_FragmentedTelegramList.empty(); } } // namespace PrtCnv