#pragma once #include "MsrThreadStatus.h" #include "OTSSampleClr.h" namespace OTSINTERFACE { using namespace System; using namespace OTSDATA; using namespace OTSMODEL; public ref class CMsrThreadStatusClr : public Object { public: CMsrThreadStatusClr(); CMsrThreadStatusClr(CMsrThreadStatusClr^); // copy constructor CMsrThreadStatusClr(CMsrThreadStatusPtr); // copy constructor CMsrThreadStatusClr^ operator=( CMsrThreadStatusClr^); // =operator ~CMsrThreadStatusClr(); !CMsrThreadStatusClr(); CMsrThreadStatusPtr GetMsrThreadStatusPtr(); // status int GetStatus() { return (int)mMsrStatus->get()->GetStatus(); } void SetStatus(int a_nStatus) { mMsrStatus->get()->SetStatus ((OTS_MSR_THREAD_STATUS) a_nStatus); } // start time DateTime^ GetStartTime() { COleDateTime oStartTime = mMsrStatus->get()->GetStartTime(); return gcnew DateTime(oStartTime.GetYear(), oStartTime.GetMonth(), oStartTime.GetDay(), oStartTime.GetHour(), oStartTime.GetMinute(), oStartTime.GetSecond()); } void SetStartTime(DateTime^ a_timeStart) { COleDateTime oStartTime; int nYear = a_timeStart->Year; int nMonth = a_timeStart->Month; int nDay = a_timeStart->Day; int nHour = a_timeStart->Hour; int nMin = a_timeStart->Minute; int nSec = a_timeStart->Second; if (nYear == 1 && nMonth == 1 && nDay == 1 && nHour == 0 && nMin == 0 && nSec == 0) { oStartTime = COleDateTime(); } else { oStartTime.SetDateTime(a_timeStart->Year, a_timeStart->Month, a_timeStart->Day, a_timeStart->Hour, a_timeStart->Minute, a_timeStart->Second); } mMsrStatus->get()->SetStartTime(oStartTime); } // used time TimeSpan^ GetUsedTime() { COleDateTimeSpan oUsedTime = mMsrStatus->get()->GetUsedTime(); return gcnew TimeSpan(oUsedTime.GetDays(), oUsedTime.GetHours(), oUsedTime.GetMinutes(), oUsedTime.GetSeconds()); } void SetUsedTime(TimeSpan^ a_timeUsed) { COleDateTimeSpan oUsedTime(a_timeUsed->Days, a_timeUsed->Hours, a_timeUsed->Minutes, a_timeUsed->Seconds); mMsrStatus->get()->SetUsedTime(oUsedTime); } // end time DateTime^ GetEndTime() { COleDateTime oEndTime = mMsrStatus->get()->GetEndTime(); return gcnew DateTime(oEndTime.GetYear(), oEndTime.GetMonth(), oEndTime.GetDay(), oEndTime.GetHour(), oEndTime.GetMinute(), oEndTime.GetSecond()); } void SetEndTime(DateTime^ a_timeEnd) { COleDateTime oEndTime; int nYear = a_timeEnd->Year; int nMonth = a_timeEnd->Month; int nDay = a_timeEnd->Day; int nHour = a_timeEnd->Hour; int nMin = a_timeEnd->Minute; int nSec = a_timeEnd->Second; if (nYear == 1 && nMonth == 1 && nDay == 1 && nHour == 0 && nMin == 0 && nSec == 0) { oEndTime = COleDateTime(); } else { oEndTime.SetDateTime(a_timeEnd->Year, a_timeEnd->Month, a_timeEnd->Day, a_timeEnd->Hour, a_timeEnd->Minute, a_timeEnd->Second); } mMsrStatus->get()->SetEndTime(oEndTime); } // completed samples COTSSamplesListClr^ GetCompletedSample() { auto lstSample = mMsrStatus->get()->GetCompletedSamples(); auto samples = gcnew COTSSamplesListClr(); for each (auto s in lstSample) { samples->Add(gcnew COTSSampleClr(s)); } return samples; } void SetCompletedSample(COTSSamplesListClr^ a_listCpldSamples); protected: // duplication void Duplicate( CMsrThreadStatusClr^ a_oSource); private: CMsrThreadStatusPtr* mMsrStatus; }; }