#include "BOINCClientAdapter.h" BOINCClientAdapter::BOINCClientAdapter() { m_WUSkyPosRightAscension = 0.0; m_WUSkyPosDeclination = 0.0; m_WUFractionDone = 0.0; m_WUCPUTime = 0.0; m_SharedMemoryAreaAvailable = false; readUserInfo(); readSharedMemoryArea(); } BOINCClientAdapter::~BOINCClientAdapter() { } void BOINCClientAdapter::refresh() { readSharedMemoryArea(); } void BOINCClientAdapter::readUserInfo() { boinc_parse_init_data_file(); boinc_get_init_data(m_UserData); } void BOINCClientAdapter::readSharedMemoryArea() { if(m_SharedMemoryAreaAvailable) { if(4 != sscanf(m_SharedMemoryArea, "<graphics_info>\n" " <skypos_rac>%lf</skypos_rac>\n" " <skypos_dec>%lf</skypos_dec>\n" " <fraction_done>%lf</fraction_done>\n" " <cpu_time>%lf</cpu_time>\n", &m_WUSkyPosRightAscension, &m_WUSkyPosDeclination, &m_WUFractionDone, &m_WUCPUTime)) { cerr << "Incompatible shared memory data encountered!" << endl; } } else { m_SharedMemoryArea = (char*) boinc_graphics_get_shmem(EAH_SHMEM_APP_NAME); if(m_SharedMemoryArea) { m_SharedMemoryAreaAvailable = true; readSharedMemoryArea(); } else { m_SharedMemoryAreaAvailable = false; } } } string BOINCClientAdapter::coreVersion() const { stringstream buffer; buffer << m_UserData.major_version << "." << m_UserData.minor_version << "." << m_UserData.release; return string(buffer.str()); } string BOINCClientAdapter::applicationName() const { return string(m_UserData.app_name); } string BOINCClientAdapter::applicationVersion() const { stringstream buffer; buffer << m_UserData.app_version; return string(buffer.str()); } string BOINCClientAdapter::userName() const { return string(m_UserData.user_name); } string BOINCClientAdapter::teamName() const { return string(m_UserData.team_name); } double BOINCClientAdapter::userCredit() const { return m_UserData.user_total_credit; } double BOINCClientAdapter::userRACredit() const { return m_UserData.user_expavg_credit; } double BOINCClientAdapter::hostCredit() const { return m_UserData.host_total_credit; } double BOINCClientAdapter::hostRACredit() const { return m_UserData.host_expavg_credit; } string BOINCClientAdapter::wuName() const { return string(m_UserData.wu_name); } double BOINCClientAdapter::wuFPOpsEstimated() const { return m_UserData.rsc_fpops_est; } double BOINCClientAdapter::wuFPOpsBound() const { return m_UserData.rsc_fpops_bound; } double BOINCClientAdapter::wuMemoryBound() const { return m_UserData.rsc_memory_bound; } double BOINCClientAdapter::wuDiskBound() const { return m_UserData.rsc_disk_bound; } double BOINCClientAdapter::wuSkyPosRightAscension() const { return m_WUSkyPosRightAscension; } double BOINCClientAdapter::wuSkyPosDeclination() const { return m_WUSkyPosDeclination; } double BOINCClientAdapter::wuFractionDone() const { return m_WUFractionDone; } double BOINCClientAdapter::wuCPUTime() const { return m_WUCPUTime; }