Esempio n. 1
0
static Bool _ExecuteProcess(MessageHandler *handler, ProcessNode *node) {
  int (*apl)(char *, char *, char *, char *);
  char *module;
  long start, end;
  Bool rc;

  module =
      ValueStringPointer(GetItemLongName(node->mcprec->value, "dc.module"));
  if ((apl = cob_resolve(module)) != NULL) {
    PutApplication(node);

    start = GetNowTime();
    (void)apl(McpData, SpaData, LinkData, ScrData);
    end = GetNowTime();
    TimerPrintf(start, end, "OpenCOBOL %s:%s:%s\n", module, node->widget,
                node->event);

    GetApplication(node);
    if (ValueInteger(GetItemLongName(node->mcprec->value, "rc")) < 0) {
      rc = FALSE;
    } else {
      rc = TRUE;
    }
  } else {
    Warning("%s - %s is not found.", cob_resolve_error(), module);
    rc = FALSE;
  }
  return (rc);
}
Esempio n. 2
0
static void PutApplication(ProcessNode *node) {
  int i;
  char *scr;
  size_t size;
  long start, end;

  start = GetNowTime();
  if (node->mcprec != NULL) {
    OpenCOBOL_PackValue(OpenCOBOL_Conv, McpData, node->mcprec->value);
  }
  if (node->linkrec != NULL) {
    OpenCOBOL_PackValue(OpenCOBOL_Conv, LinkData, node->linkrec->value);
  }
  if (node->sparec != NULL) {
    OpenCOBOL_PackValue(OpenCOBOL_Conv, SpaData, node->sparec->value);
  }
  for (i = 0, scr = (char *)ScrData; i < node->cWindow; i++) {
    if (node->scrrec[i] != NULL) {
      size = OpenCOBOL_PackValue(OpenCOBOL_Conv, scr, node->scrrec[i]->value);
      scr += size;
    }
  }
  end = GetNowTime();
  TimerPrintf(start, end, "PutApplication\n");
}
Esempio n. 3
0
/* ========================================================================= */
void CNetwork::proc_PK_CMD_MV( int PlayerNo, int res, char *message )
{
/*	for( int i=0; i < res; i++ )
		printf( "%c", message[i] );
	printf( "\n" );

	printf( "|%d|%d|", res, message[2] );
*/
	int x = 0;
	int y = 0;
	int dx = 0;
	int dy = 0;

	procPacket( message, "%h %h %h %h", &x, &y, &dx, &dy );

//	printf( "x = %d\n", x);
//	printf( "y = %d\n", y);

	list<ClientData>::iterator it;
	it = ClientList.begin();

	while( it != ClientList.end() )
	{
		if( (*it).id == PlayerNo )
		{
			(*it).x = (float)x;
			(*it).y = (float)y;
			(*it).px = (*it).x;
			(*it).py = (*it).y;

			(*it).dx = (float)dx;
			(*it).dy = (float)dy;

			(*it).move_start_time = GetNowTime();

			float x = (*it).dx - (*it).x;
			float y = (*it).dy - (*it).y;
			float time = ( sqrtf( x*x + y*y ) / move_speed * (1.0f/60.0f) )*1000;
			(*it).move_end_time = GetNowTime() + (int)time;

//			(*it).state = STATE_MOVE;
			break;
		}
		++it;
	}

	// 周りのキャラに移動を伝える
	send_PK_OBJ_UPDATE_ACT( PlayerNo, dx, dy );
}
Esempio n. 4
0
extern void Time(char *str) {
  static long last = 0;
  long now;

  now = GetNowTime();
  fprintf(stderr, "%6ld(ms) %s\n", now - last, str);
  last = now;
}
Esempio n. 5
0
//送信
void Result::Send() {
	Song *song = songs->GetSong(songs->GetNowSong());
	//曲IDのリクエスト作成
	char songReq[126] = { 0 };
	sprintf_s(songReq, 126, "song=%d", song->GetSongId());
	//ユーザーIDのリクエスト作成
	char userReq[32] = { 0 };
	sprintf_s(userReq, 32, "user=%s", user->GetUserId());
	//現在時刻の取得
	int temp[5] = { 0 };
	GetNowTime(temp);
	//年月日のリクエスト作成
	char dateReq[32] = { 0 };
	sprintf_s(dateReq, 32, "date=%02d-%02d-%02d %02d-%02d", temp[0], temp[1], temp[2], temp[3], temp[4]);
	//総合得点のリクエスト作成
	char totalReq[16] = { 0 };
	sprintf_s(totalReq, 16, "total=%d", this->total);
	//区間別採点のリクエスト作成
	char partReq[64] = { 0 };
	sprintf_s(partReq, 64, "part=%d", score[0]);
	for (int i = 1, n = this->max; i < n; i++) {
		sprintf_s(partReq, 64, "%s/%d", partReq, score[i]);
	}
	//体の部位採点のリクエスト作成
	char bodyPoint[4] = { 0 };
	for (int i = 0; i < 4; i++) {
		switch (point[i]) {
		case 1:bodyPoint[i] = 'A';	break;
		case 2:bodyPoint[i] = 'B';	break;
		case 3:bodyPoint[i] = 'C';	break;
		}
	}
	char bodyReq[32] = { 0 };
	sprintf_s(bodyReq, 32, "body=%c/%c/%c/%c", bodyPoint[0], bodyPoint[1], bodyPoint[2], bodyPoint[3]);
	//タイミングのリクエスト作成
	char timingReq[16] = { 0 };
	sprintf_s(timingReq, 16, "timing=%d", timing);
	//表情のリクエスト作成
	char expressionReq[16] = { 0 };
	sprintf_s(expressionReq, 16, "expression=%d", expression);
	//コメントのリクエスト作成
	WCHAR w_comment[256] = { 0 };
	mbstowcs(w_comment, comment, 256);
	char commentReq[256] = { 0 };
	sprintf_s(commentReq, 256, "comment=%s", w_comment);

	//urlを作成
	char url[512] = { 0 };
	sprintf_s(url, 512, "http://globalstudios.jp/mai-archive/api_add.php?%s&%s&%s&%s&%s&%s&%s&%s&%s", 
		songReq, userReq, dateReq, totalReq, partReq, bodyReq, timingReq, expressionReq, commentReq);
	Http http;
	if(!http.Send(url))printfDx("httpエラー");
}
Esempio n. 6
0
BOOL CDecodeUtil::CheckEIT(WORD PID, CEITTable* eit)
{
	if( eit == NULL ){
		return FALSE;
	}
	
	if( epgDBUtil != NULL ){
		FILETIME time = {};
		GetNowTime(&time);
		epgDBUtil->AddEIT(PID, eit, (__int64)time.dwHighDateTime << 32 | time.dwLowDateTime);
	}
	return FALSE;
}
Esempio n. 7
0
extern ValueStruct *ExecDB_Process(DBCOMM_CTRL *ctrl, RecordStruct *rec,
                                   ValueStruct *args) {
  DB_FUNC func;
  DBG_Struct *dbg;
  ValueStruct *ret;
  long start, end;

  ret = NULL;
  ctrl->rc = 0;
  start = GetNowTime();
  dbgprintf("func  = [%s]", ctrl->func);
  if (ctrl->fDBOperation) {
    ctrl->rc = ExecFunction(NULL, ctrl->func, FALSE);
  } else {
    if (rec == NULL) {
      Warning("bad function [%s:%s:%s] null record\n", ctrl->func, ctrl->rname,
              ctrl->pname);
      ctrl->rc = MCP_BAD_FUNC;
    } else {
      dbg = RecordDB(rec)->dbg;
      func = LookupFUNC(dbg, ctrl->func);
      if (func == NULL) {
        /* _DBACCESS */
        func = (DB_FUNC)dbg->func->primitive->access;
      }
      ret = (*func)(dbg, ctrl, rec, args);
      CheckErrCount(dbg, ctrl);
      SetDBAudit(dbg);
    }
    if (ctrl->rc < 0) {
      Warning("bad function [%s:%s:%s] rc = %d\n", ctrl->func, ctrl->rname,
              ctrl->pname, ctrl->rc);
    }
  }
  end = GetNowTime();
  ctrl->time = (end - start);
  TimerPrintf(start, end, "%s:%s:%s\n", ctrl->func, ctrl->rname, ctrl->pname);
  return (ret);
}
Esempio n. 8
0
 void BattleWalkFighter::BuildLocalStream(UInt8 wait, UInt8 param)
 {
     //_st.reset();
     //_st << static_cast<UInt8>(ACTION_HAPPEN); //即使起作用
     //_st << static_cast<UInt8>(getPosX());
     //_st << static_cast<UInt8>(getPosY());
     //InsertFighterInfo(_st);
     //TODO 被击
     //_st << _actionType;
     switch(wait)
     {
         case e_run:
             if(_target)
             {
                 _st << static_cast<UInt16>(GetNowTime());
                 _st << GetBSNumber();
                 _st << static_cast<UInt8>(4);
                 _st << _target->GetBSNumber();
                 //COUT << "时间点" << static_cast<UInt32>(GetNowTime()) << std::endl;
                 //COUT << "战将编号" << static_cast<UInt32>(GetBSNumber()) << std::endl;
                 //COUT << "目标编号" << static_cast<UInt32>(_target->GetBSNumber()) << std::endl;
             }
             break;
         case e_attack_near:
         case e_attack_middle:
         case e_attack_distant:
         case e_image_attack:
         case e_image_therapy: //弃用
             {
                 //_st << static_cast<UInt8>(wait);  //是否延迟
                 //_st << static_cast<UInt8>(_actionLast); //动作持续
                 //for(;it!=targetList.end();++it)
                 { 
                     //_st << (_target)->getPosX();
                     //_st << (_target)->getPosY();
                 } 
             }
         case e_be_attacked://弃用
             _st << static_cast<UInt32>(param);
             break;
         default :
             break;
     }
 }
Esempio n. 9
0
void Log::Init() {
  GetNowTime();
  log_header_.fill('0');
  log_header_ << setw(2) << 1 + tm_time_.tm_mon
    << setw(2) << tm_time_.tm_mday
    << ' '
    << setw(2) << tm_time_.tm_hour
    << ':'
    << setw(2) << tm_time_.tm_min
    << ':'
    << setw(2) << tm_time_.tm_sec
    << '.'
    << setw(2)  << timeval_.tv_usec
    << ' '
    << file_
    << ":"
    << line_
    << "] "
    << '\0';
}
Esempio n. 10
0
    void BattleRideFighter::BuildLocalStream(UInt8 wait, UInt8 param)
    {
        UInt8 type = _actionType ;
        if(wait)
            type = wait;
        switch(type)
        {
            case e_run:
                if(GetBSNumber() == 0 || GetBSNumber() == 11)
                {
                    //COUT<< " 战将ID: " << static_cast<UInt32>(GetBSNumber());
                    //COUT<< " 目标 x 坐标:" << static_cast<UInt32>(_battleTargetX);
                    //COUT<< " 自身 x 坐标:" << static_cast<UInt32>(getPosX()) << std::endl;
                }
                if(!isRunSend)
                {
                    _st << static_cast<UInt16>(GetNowTime());
                    (_st << GetBSNumber());
                    _st << static_cast<UInt8>(0);
                    _st << static_cast<UInt16>(_battleTargetY);
                    isRunSend = true ;
                    //COUT << " 回合数:" << static_cast<UInt32>(GetNowTime());
                    //COUT << " 战将ID: " << static_cast<UInt32>(GetBSNumber());
                    //COUT << " 前进 y 坐标:" << static_cast<UInt32>(_battleTargetY);
                    //COUT << std::endl;
                } 
                break;
            case e_attack_near:
            case e_attack_middle:
            case e_attack_distant:
            case e_image_attack:
            case e_image_therapy: //弃用
                {
                    break;
                    //for(;it!=targetList.end();++it)
                    { 
                        if(_target)
                        {
                            _st << static_cast<UInt8>(_nowTime);
                            _st << GetBSNumber();
                            _st << static_cast<UInt8>(1);
                            _st << _target->GetBSNumber();
                            _st << static_cast<UInt16>(param);

                            //COUNT<< " 回合数:" << static_cast<UInt32>(_nowTime);
                            //COUNT<< " 战将ID: " << static_cast<UInt32>(GetBSNumber());
                            //COUNT<< " 进攻战将编号:" << static_cast<UInt32>(_target->GetBSNumber());
                            //COUNT<< " 己方坐标: " << static_cast<UInt32>(getPosX()) << "," << static_cast<UInt32>(getPosY());
                            //COUNT<< " 敌方坐标: " << static_cast<UInt32>(_target->getPosX()) << "," << static_cast<UInt32>(_target->getPosY()) ;
                            //COUNT << " 对方血量: " << static_cast<UInt32>(_target->getHP()) << std::endl;
                            _actionType = e_none;

                            //COUNT << std::endl;
                        }
                        //_st << (_target)->getPosX();
                        //_st << (_target)->getPosY();
                    } 
                }
                break;
            case e_be_attacked:  //弃用
                {
                    break;
                    _st << static_cast<UInt8>(_nowTime);
                    _st << GetBSNumber();
                    _st << static_cast<UInt8>(2);
                    _st << static_cast<UInt16>(param);

                    //COUNT << " 回合数:" << static_cast<UInt32>(_nowTime);
                    //COUNT << " 战将ID: " << static_cast<UInt32>(GetBattleIndex());
                    //COUNT << " 受伤:" << static_cast<UInt32>(param);
                    //COUNT << std::endl;
                }
                break;
            default :
                break;
        }
    }
Esempio n. 11
0
		//タイマー終了(戻り値:経過時間(ms)
		unsigned long SetEndTimer(){ endtime = GetNowTime(); passedtime = endtime - starttime; return passedtime; }
Esempio n. 12
0
		//好きなタイミングでセットして好きなタイミングで停止できるタイマー(2つで1セット)
		//タイマー開始
		void SetStartTimer(){ starttime = endtime = GetNowTime(); }
Esempio n. 13
0
		TimerClass(){ starttime = endtime = GetNowTime(); passedtime = 0; }
Esempio n. 14
0
	tm GetNowTM(void)
	{
		return Time2TM(GetNowTime());
	}
Esempio n. 15
0
char* CHSDownloadData::MakeReqPacket( CodeInfo* pCode, short nPeriod , long &lReqLen)
{
	if ( pCode == NULL || IsBadReadPtr(pCode,1))
		return NULL;
	BOOL bChangeRange = FALSE;
	BOOL bDownLoaded = FALSE;
	CString str;
	str.Format("%d-%s",pCode->m_cCodeType,pCode->GetCode());
/*	TaskItem* m_pTaskItem = NULL;*/
	if( m_pTaskItem && !IsBadReadPtr(m_pTaskItem,1) && m_pTaskItem->m_TaskName.Compare(str) )
	{
		m_pTaskItem->SetDayTaskFinished();
		m_pTaskItem->SetMinute1TaskFinished();
		m_pTaskItem->SetMinute5TaskFinished();
		return NULL;
	}

	m_DownLoadCount = 0;
	int nAfterBegin = 1300,nAfterEnd = 1500;
	short nGZIndex = MakeGZIndex(pCode->m_cCodeType);
	short nQihuo = MakeMarket(pCode->m_cCodeType);
	if (nQihuo == FUTURES_MARKET)
	{
		if (nGZIndex)
		{
			nAfterEnd = 1515;
		}
		else
		{
			nAfterBegin = 1330;
		}
	}
	//取本地缓存中已有的数据
	GetLocalData(pCode,nPeriod,m_pTaskItem);

	CArray<DateRange,DateRange> ayDate;
	CTime t1 = GetNowTime(nPeriod);
	CTimeSpan tSpan = GetTimeStep(nPeriod);
	unsigned long nLimitTime = GetLimitDate(pCode,nPeriod,m_nLimitedDay);//修正2012时间问题
	unsigned long nEarliestTime = GetIntTimeFromTime(t1,nPeriod);//修正2012时间问题
	unsigned long nTodayTime = nEarliestTime;//修正2012时间问题

	long lCurDate = 10;	
	
	CTime tmNow = CTime::GetCurrentTime();
	lCurDate = tmNow.GetYear() * 10000 + tmNow.GetMonth() * 100 + tmNow.GetDay();
	
	bDownLoaded = IsDownLoaded(lCurDate,pCode,nPeriod);

	try
	{

		BOOL bExistLastData = FALSE;
		BOOL bFirstDayRange = TRUE;
		CString strCode = pCode->GetCode();
		StockDay* pStockDay = (StockDay*)m_pTaskItem->m_localData;
		for(int i =  m_pTaskItem->m_localDataCount - 1; i >= 0; i--)
		{
			if (bDownLoaded)
			{
				break;
			}

			if(pStockDay[i].m_lDate <= 0)
				continue;

			if(pStockDay[i].m_lDate < nEarliestTime)
				nEarliestTime = pStockDay[i].m_lDate;

			if (pStockDay[i].m_lDate == 20000000) //修正错误的日期时间
			{
				pStockDay[i].m_lDate = 19991231;
			}

			///////////////若本地一存在的数据日期在限制时间内 则挑过数据的缺失检查/////////////////////////////
			if (i == m_pTaskItem->m_localDataCount - 1)
			{
				CTime tmNow = t1;
				CTime tmLastData = GetTimeFromIntTime(pStockDay[i].m_lDate,nPeriod);
				int nNowYear = tmNow.GetYear();
				int nNowMonth = tmNow.GetMonth();
				int nNowDay = tmNow.GetDay();
				if ( nNowYear == tmLastData.GetYear() && nNowMonth == tmLastData.GetMonth() && tmLastData.GetDay() == nNowDay)
				{
					CTime tmlimit = GetTimeFromIntTime(nLimitTime,nPeriod);
					CTime tmFirstDate = GetTimeFromIntTime(pStockDay[0].m_lDate,nPeriod);
					if (m_nLimitedDay == 0)
					{
						if ( PERIOD_TYPE_DAY != nPeriod)
						{
							int nMaxDays = 0;
							if (nGZIndex)
								nMaxDays = 36 - 1;  //36 = (10000/240 * 240)/270
							else
								nMaxDays = 41 - 1; //41= 10000/240

							long lLastDate = tmLastData.GetYear() * 10000 + tmLastData.GetMonth() * 100 + tmLastData.GetDay();
						
							if (lLastDate != lCurDate)
							{
								nMaxDays --;
							}

							CTimeSpan tmSpan(1,0,0,0);
							int nCount = 0;
							while(nCount < nMaxDays)
							{
								tmLastData -= tmSpan;
								if (tmLastData.GetDayOfWeek() != 1&& tmLastData.GetDayOfWeek() != 7)
								{
									nCount ++;
								}
							}				
						}
						if (PERIOD_TYPE_DAY == nPeriod)
						{
							if (tmFirstDate.GetYear() <= tmlimit.GetYear() && tmFirstDate.GetMonth() <= tmlimit.GetMonth() 
								&& tmFirstDate.GetDay() <= tmlimit.GetDay())
							{
								bExistLastData = TRUE;
							}
						}
						else if (tmFirstDate.GetYear() <= tmLastData.GetYear() && tmFirstDate.GetMonth() <= tmLastData.GetMonth() 
							&& tmFirstDate.GetDay() <= tmLastData.GetDay())
						{
							bExistLastData = TRUE;
						}
					}
					else
					{
						if (tmFirstDate.GetYear() <= tmlimit.GetYear() && tmFirstDate.GetMonth() <= tmlimit.GetMonth() 
							&& tmFirstDate.GetDay() <= tmlimit.GetDay())
						{
							bExistLastData = TRUE;
						}
					}
					if (bExistLastData)
					{
						break;
					}
				}
			}
			//////////////////////////////////////////////////////////////////////////

			int nCount = 0;	
			long lEndDate = 0;
			long lBeginDate = 0;

			CTime t2 = GetTimeFromIntTime(pStockDay[i].m_lDate,nPeriod);
			CTime t = t2;
			if (i != m_pTaskItem->m_localDataCount - 1)
			{
				t = t + tSpan;
			}
			while(t < t1)
			{
				if(t.GetDayOfWeek() != 1 &&  t.GetDayOfWeek() != 7 && t < t1) //1 = Sunday, 2 = Monday, ..., 7 = Saturday
				{
					if(lBeginDate == 0)
						lBeginDate = GetIntTimeFromTime(t,nPeriod);

					if (!bFirstDayRange)
					{
						lEndDate = GetIntTimeFromTime(t1 - tSpan,nPeriod);
					}
					else
					{
						while(t1.GetDayOfWeek()==1 || t1.GetDayOfWeek() == 7)
						{
							CTimeSpan OneDay(1,0,0,0);
							t1 -= OneDay;
						}
						lEndDate = GetIntTimeFromTime(t1,nPeriod);
					}
					nCount ++;
					break;
				}
				t = t + tSpan;
			};

			t1 = t2;
			bFirstDayRange = FALSE;

			if(nCount > 0 && lBeginDate >= nLimitTime )
			{
				if( lEndDate < nLimitTime)
					lEndDate = nLimitTime;

				CTime tmBegin = GetTimeFromIntTime(lBeginDate,nPeriod);
				CTime tmEnd = GetTimeFromIntTime(lEndDate,nPeriod);
				if (tmBegin.GetYear() == tmEnd.GetYear() && tmBegin.GetMonth() == tmEnd.GetMonth() && tmBegin.GetDay() == tmEnd.GetDay())
				{
					if (tmBegin.GetHour()*100 + tmBegin.GetMinute() > 1130 && tmEnd.GetHour()*100 + tmEnd.GetMinute() < nAfterBegin)
					{
						continue;
					}
				}

				if (lBeginDate > lEndDate)
				{
					continue ;
				}

				DateRange dr;
				dr.m_nBeginDate = lBeginDate;
				dr.m_nEndDate = lEndDate;
				ayDate.Add(dr);
			}

			if (nCount == 0 && pStockDay[i].m_lDate <= nLimitTime)
			{
				break;
			}
		}

		//下载分钟线数据时按9840的倍数根往前下载,若没有最近41天的数据,则下载最近82天数据,依次类推,最多倒退41*18天
		int nLimitedDays = 0,nPermitCount = 9840;
		if (ayDate.GetCount() < 1)
		{
			if(nEarliestTime > nLimitTime && !bExistLastData) 			//加入最后一段时间
			{
				DateRange dr;
				dr.m_nBeginDate = nLimitTime;
				dr.m_nEndDate = nEarliestTime;
				ayDate.Add(dr);
			}
		}
		else
		{
			int nMaxDays = 0;
			DateRange LastDateRage = ayDate.GetAt(ayDate.GetUpperBound());
			long nPreDate = GetPreDataDate(pCode,LastDateRage.m_nBeginDate,nPeriod);
			if (nGZIndex)
				nMaxDays = 36 - 1;  //36 = (10000/240 * 240)/270
			else
				nMaxDays = 41 - 1;  //41= 10000/240

			long nEarlyLimitedDate = nLimitTime;
			if (PERIOD_TYPE_DAY != nPeriod)
			{
				nEarlyLimitedDate = GetPreDate(pStockDay[m_pTaskItem->m_localDataCount -1].m_lDate,nMaxDays,nPeriod);
				long nCheckDataCount = GetDayDataCount(pCode,nEarlyLimitedDate,nTodayTime,nPeriod);
				if (nCheckDataCount > nPermitCount)
				{
					int nSurplusCount = nCheckDataCount - nPermitCount;
					nEarlyLimitedDate = GetChangedBeginDate(pCode,nEarlyLimitedDate,nSurplusCount,nPeriod);
				}
			}
			if (nPreDate >= nEarlyLimitedDate)
			{
				DateRange dr;
				dr.m_nBeginDate = nEarlyLimitedDate > nLimitTime ? nEarlyLimitedDate : nLimitTime;
				dr.m_nEndDate = nPreDate;
				ayDate.Add(dr);
			}
		}

		CArray<DateRange,DateRange> ayDateChange;
		int nDateCount = ayDate.GetCount();
		nPermitCount = nPermitCount*(m_nReloadDegree + 1);
		for (int i = nDateCount - 1; i>= 0; i--)
		{
			DateRange dateRange = ayDate.GetAt(i);
			long nRangeCount = GetDayDataCount(pCode,dateRange.m_nBeginDate,dateRange.m_nEndDate,nPeriod);
			nLimitedDays += nRangeCount;
			if (nLimitedDays < nPermitCount)
			{
				ayDateChange.Add(dateRange);
			}
			else
			{
				int nSpillCount = nLimitedDays - nPermitCount;
				dateRange.m_nBeginDate = GetChangedBeginDate(pCode,dateRange.m_nBeginDate,nSpillCount,nPeriod);
				ayDateChange.Add(dateRange);
				bChangeRange = TRUE;
				break;
			}
		}
		if (bChangeRange)
		{
			nDateCount = ayDateChange.GetCount();
		}

		if (bDownLoaded)
		{
			bChangeRange = TRUE;
			ayDateChange.RemoveAll();
			long nOutRangeDateB = 20101001; //国庆放假无交易行情
			long nOutRangeDateE = 20101001;
			if (PERIOD_TYPE_DAY != nPeriod)
			{
				nOutRangeDateB = 2010010930;
				nOutRangeDateE = 2010010930;
			}		
			DateRange dr;
			dr.m_nBeginDate = nOutRangeDateB;
			dr.m_nEndDate = nOutRangeDateE;
			nDateCount = ayDateChange.GetCount();
		}

		short nCount = sizeof(ReqDayData) / sizeof(CodeInfo);
		if( sizeof(ReqDayData) % sizeof(CodeInfo) )
			nCount++;
		int lLen = sizeof(AskData) + sizeof(CodeInfo) * (nCount - 1) + nDateCount * sizeof(DateRange);
		lReqLen = lLen;
		AskData* ask = (AskData*)(new char[lLen]);
		memset(ask,0,lLen);

		ask->m_nType  = RT_TECHDATA_RANGE;
		ask->m_nSize  = nCount;
		ask->m_lKey = nPeriod;
		memcpy(&ask->m_nPrivateKey, pCode, sizeof(CodeInfo));

		ReqRangeDayData* pRequest = (ReqRangeDayData*)ask->m_pCode;
		pRequest->m_lBeginPosition = 0;
		pRequest->m_nDay = 0;
		pRequest->m_cPeriod = nPeriod;
		memcpy(&pRequest->m_ciCode, pCode, sizeof(CodeInfo));
		pRequest->m_nDataRangCount = nDateCount;
		DateRange *pRane = pRequest->m_dataRange;

		CString strRequest,strRang;
		for(int nIndex = 0; nIndex < nDateCount; nIndex++)
		{
			if (bChangeRange)
				pRane[nIndex] = ayDateChange.GetAt(nIndex);
			else
				pRane[nIndex] = ayDate.GetAt(nIndex);

			m_DownLoadCount += GetDayDataCount(pCode,pRane[nIndex].m_nBeginDate,pRane[nIndex].m_nEndDate,nPeriod);
			strRang.Format("%d-%d;",pRane[nIndex].m_nBeginDate,pRane[nIndex].m_nEndDate);
			strRequest += strRang;
		}
		return (char*)ask;

	}
	catch (...)
	{
	}
	return NULL;
}
Esempio n. 16
0
unsigned long GetLimitDate(CodeInfo *pCode,short nPeriod,int nDays)
{
	static int min1_download_limit_day = 0;
	static int min5_download_limit_day = 0;

	if(min1_download_limit_day == 0 || min5_download_limit_day == 0) 
	{
		CString strConfigFile = CGeneralHelper::GetSpecifyPath(CGeneralHelper::SETTING_PATH) + "sysconfig.ini";
		min1_download_limit_day = ::GetPrivateProfileInt("data_download","min1_download_limit_day",33000,strConfigFile);
		min5_download_limit_day = ::GetPrivateProfileInt("data_download","min15_download_limit_day",33000,strConfigFile);

	}

	short nGZIndex = MakeGZIndex(pCode->m_cCodeType);
	short nMainType  = MakeMarket(pCode->m_cCodeType);
	int nBeing1min = 931;
	int nBegin5min = 935;
	if (nMainType != STOCK_MARKET)
	{
		if (nGZIndex)
		{
			nBeing1min = 916;
			nBegin5min = 920;
		}
		else
		{
			nBeing1min = 901;
			nBegin5min = 905;
		}
	}

	CTime tm20(2000,1,5,0,0,0);
	CTime t = GetNowTime(nPeriod);
	CTimeSpan tmSpan = t - tm20;
	long lCurTime = t.GetYear()*10000 + t.GetMonth()*100 + t.GetDay();
	long nLimitedTime = 0;
	switch(nPeriod)
	{
	case PERIOD_TYPE_DAY:
		{
			if (nDays == 0)
				nLimitedTime =  19900101;
			else
			{
				CTimeSpan tSpanDay(nDays,0,0,0);
				nLimitedTime = GetIntTimeFromTime(t - tSpanDay,nPeriod);
			}
			break;
		}	
	case PERIOD_TYPE_MINUTE5:
		{
			int nLimit = 10;
			if (nDays != 0)
				nLimit = nDays < min5_download_limit_day ? nDays : min5_download_limit_day;
			else
				nLimit = tmSpan.GetDays();

			CTimeSpan tSpan5(nLimit,0,0,0);
			CTime nLimitTm = t - tSpan5;
			nLimitedTime = nBegin5min+ nLimitTm.GetDay()* 10000 + nLimitTm.GetMonth() * 1000000 + (nLimitTm.GetYear() - 1990)* 100000000;
			//nLimitedTime =  GetIntTimeFromTime(t - tSpan5,nPeriod);
			break;
		}
	case PERIOD_TYPE_MINUTE1:
		{
			int nLimit = 10;
			if (nDays != 0)
				nLimit = nDays < min1_download_limit_day ? nDays : min1_download_limit_day;
			else
				nLimit = tmSpan.GetDays();

			CTimeSpan tSpan1(nLimit,0,0,0);
			CTime nLimitTm = t - tSpan1;
			nLimitedTime = nBeing1min + nLimitTm.GetDay()* 10000 + nLimitTm.GetMonth() * 1000000 + (nLimitTm.GetYear() - 1990)* 100000000;
			break;
		}
	}
	return nLimitedTime;
}