Esempio n. 1
0
TInt CConvertTimeViaServer::CreateAndRunTestUnitL()
{
    TTime t;
    TInt errUTC = KErrNone;
    TInt errLocal = KErrNone;

    // Instantiate Converter
    User::LeaveIfError(iTimeZoneServer.Connect());

    // Set home location
    TInt err = CDstIntUtils::SetHomeTimeZoneL(iCityName, iTimeZoneServer);

    if (iSystemLocalTime != Time::NullTTime())
    {
        iTimeZoneServer.SetHomeTime(iSystemLocalTime);
    }

    if(err != KErrNone)
    {
        TBuf8<64> txt;
        txt.Append(_L8("Zone not set: "));
        txt.Append(iCityName);
        TBuf<64> txtmsg;
        txtmsg.Copy(txt);
        LogCheck(txtmsg, err);
    }
    else
    {
        // Handle UTC to local conversion
        if((iConversion == EConvertUTC) || (iConversion == EConvertBoth))
        {
            t = iUTCTime;
            errUTC = iTimeZoneServer.ConvertToLocalTime(t);
            if(errUTC == KErrNone)
            {
                errUTC = CompareTimesL(t, EConvertUTC);
            }
        }

        // Handle local to UTC conversion
        if((iConversion == EConvertLocal) || (iConversion == EConvertBoth))
        {
            t = iLocalTime;
            errLocal = iTimeZoneServer.ConvertToUniversalTime(t);
            if(errLocal == KErrNone)
            {
                errLocal = CompareTimesL(t, EConvertLocal);
            }
        }

        if(errUTC != KErrNone)
            err = errUTC;
        if(errLocal != KErrNone)
            err = errLocal;
    }

    return err;
}
Esempio n. 2
0
TInt CConvertTimeViaServer::CompareTimesL(TTime t, TConversion aConversion)
{
    TInt err = KErrNone;
    TBuf<128> txt;
    txt.Zero();

    switch(aConversion)
    {
    case EConvertUTC:
        if(t != iLocalTime)
        {
            err = KErrGeneral;
            CDstIntUtils::AppendTimeParamStringL(iUTCTime, txt);
            txt.Append(_L(" UTC to "));
            CDstIntUtils::AppendTimeParamStringL(iLocalTime, txt);
            txt.Append(_L(" local, received "));
            CDstIntUtils::AppendTimeParamStringL(t, txt);
            LogCheck(txt, err);
        }
        break;

    case EConvertLocal:
        if(t != iUTCTime)
        {
            err = KErrGeneral;
            CDstIntUtils::AppendTimeParamStringL(iLocalTime, txt);
            txt.Append(_L(" local to "));
            CDstIntUtils::AppendTimeParamStringL(iUTCTime, txt);
            txt.Append(_L(" UTC, received "));
            CDstIntUtils::AppendTimeParamStringL(t, txt);
            LogCheck(txt, err);
        }
        break;

    default:
        err = KErrNotFound;
        txt.Append(_L("Unknown conversion"));
        LogCheck(txt, err);
        break;
    }

    return err;
}
Esempio n. 3
0
/**
 * Function : Simulation
 * Description : simulate doctor working
 * Input : 
 * Output : nothing
 * return : OK or ERROR
 */
void Simulation(Queue_Pat *Prio_Que) {
	time_t nowtime ;
	struct tm *timeinfo ;
	Pat patient;	//记录当前就诊病人
	int i;
	while(TRUE) {
		time(&nowtime) ;
		timeinfo = localtime(&nowtime) ;
		printf("\t\t\t\t当前为仿真系统\n\n");
		if(!PriorityQue_Empty(*Prio_Que)) {
			//队列不空
			patient = (Prio_Que->base)[1] ;	//提取当前就诊病人
			Priority_DeletMin(Prio_Que);	//优先级高的病人出队列
			QueueAdjust(Prio_Que);		//调整队列
			while(hour * (timeinfo->tm_hour - patient.arrive_time -> tm_hour) +
			 timeinfo -> tm_min - patient.arrive_time -> tm_min < 
			 /*patient.pat_condition*/1 ) {
				//未达到预计就诊时间
				Pat_LeaveJudge(Prio_Que); //病人离开检查
			}//while
			//优先级更新
			QueueAdjust(Prio_Que);
			if(Prio_Que->length) {
				for(i = 1 ; i <= Prio_Que->length ; i ++) {
					//优先级更新
					(Prio_Que->base)[i].key = Cal_Priority((Prio_Que->base)[i]);
				}
				HeapSort(Prio_Que);	//优先级重排
			}//if
		}//if
		system("cls");
		LogCheck();
		printf("\n正在等待更新...");
		Sleep(60*1000);
	}
}
Esempio n. 4
0
TInt CConvertTime::CreateAndRunTestUnitL()
{
    TTime t;
    TInt converterErrUTC = KErrNone;
    TInt rulesErrUTC = KErrNone;
    TInt converterErrLocal = KErrNone;
    TInt rulesErrLocal = KErrNone;

    User::LeaveIfError(iTimeZoneServer.Connect());

    // Set home location
    TInt err = CDstIntUtils::SetHomeTimeZoneL(iCityName, iTimeZoneServer);

    if (iSystemLocalTime != Time::NullTTime())
    {
        iTimeZoneServer.SetHomeTime(iSystemLocalTime);
    }

    // Instantiate Converter
    CTzConverter *converter = CTzConverter::NewL(iTimeZoneServer);
    CleanupStack::PushL(converter);

    CTzId* tzId = CTzId::NewL(iCityName);
    CleanupStack::PushL(tzId);
    CTzRules* rules = iTimeZoneServer.GetTimeZoneRulesL(*tzId, TDateTime(0, EJanuary, 0, 0, 0, 0, 0), TDateTime(9999, EJanuary, 0, 0, 0, 0, 0), ETzWallTimeReference);
    CleanupStack::PopAndDestroy(tzId);
    CleanupStack::PushL(rules);

    if(err != KErrNone)
    {
        TBuf8<64> txt;
        txt.Append(_L8("Zone not set: "));
        txt.Append(iCityName);
        TBuf<64> txtmsg;
        txtmsg.Copy(txt);
        LogCheck(txtmsg, err);
    }
    else
    {
        // Handle UTC to local conversion
        if((iConversion == EConvertUTC) || (iConversion == EConvertBoth))
        {
            t = iUTCTime;
            converterErrUTC = converter->ConvertToLocalTime(t);
            if(converterErrUTC == KErrNone)
            {
                converterErrUTC = CompareTimesL(t, EConvertUTC);
            }

            t = iUTCTime;
            TRAP(rulesErrUTC, rules->ConvertToLocalL(t));
            if(rulesErrUTC == KErrNone)
            {
                rulesErrUTC = CompareTimesL(t, EConvertUTC);
            }
        }

        // Handle local to UTC conversion
        if((iConversion == EConvertLocal) || (iConversion == EConvertBoth))
        {
            t = iLocalTime;
            converterErrLocal = converter->ConvertToUniversalTime(t);
            if(converterErrLocal == KErrNone)
            {
                converterErrLocal = CompareTimesL(t, EConvertLocal);
            }

            t = iLocalTime;
            TRAP(rulesErrLocal, rules->ConvertToUtcL(t));
            if(rulesErrLocal == KErrNone)
            {
                rulesErrLocal = CompareTimesL(t, EConvertLocal);
            }
        }

        if(converterErrUTC != KErrNone)
            err = converterErrUTC;
        if(converterErrLocal != KErrNone)
            err = converterErrLocal;
        if(rulesErrUTC != KErrNone)
            err = rulesErrUTC;
        if(rulesErrLocal != KErrNone)
            err = rulesErrLocal;
    }

    CleanupStack::PopAndDestroy(rules);
    CleanupStack::PopAndDestroy(converter);

    return err;
}