コード例 #1
0
ファイル: Main.cpp プロジェクト: Jack2/Lazenca-A-Andoird
/*
 *	SEARCH
 *	FUZZING
 *	- small
 *	- lager
 *	- equal
 *	- notequal
 *	WRITE
 *	PROCESS(Process List)
 *	THREADLIST
 *	ATTACH
 *	CONTROL
 *	- STOP
 *	- START
 *	SHOWLIST(Data List)
 *	CLEAR
 *	EXIT
 */
int main(int argc, const char* argv[]) {

	getUUID();

	char message[BUFSIZE];
	char command1[BUFSIZE] = { '\0', }, command2[BUFSIZE] = { '\0', },command3[BUFSIZE] = { '\0', };

	while (1) {
		printf("Lazenca$ ");
		fgets(message, BUFSIZE, stdin);
		fflush (stdin);

		//입력값이 있는지 없는지 확인
		if (strlen(message) > 1) {
			sscanf(message, "%s%s%s", command1, command2, command3);
			/*printf("command1 : %s, command2 : %s, command3 : %s\n",
			 strupr(command1), command2, command3);*/

			//Process Attach
			if (!strcmp(ATTACH, strupr(command1))) {
				ListClear();
				ProcAttach(command2);
				continue;
				//Process List
			} else if (!strcmp(PROCESSLIST, strupr(command1))) {
				showProcessList();
				continue;
				//Process Exit
			} else if (!strcmp(EXIT, strupr(command1))) {
				exit(0);
			}

			char tempPath[256];
			sprintf(tempPath, "/proc/%d", privatePid);
			if (checkDir(tempPath)) {
				//검색
				if (!strcmp(SEARCH, strupr(command1))) {
					MemorySearch(command2);
					//퍼징
				} else if (!strcmp(FUZZING, strupr(command1))) {
					MemoryFuzzing(command2);
					//값 변경
				} else if (!strcmp(WRITE, strupr(command1))) {
					MemoryWrite(command2, command3);
					//Thread List
				} else if (!strcmp(THREADLIST, strupr(command1))) {
					showThreadList();
					//Process Control
				} else if (!strcmp(CONTROL, strupr(command1))) {
					ThreadControl(command2, command3);
					//Data List
				} else if (!strcmp(DATALIST, strupr(command1))) {
					ShowDataList();
					//Data List Clear
				} else if (!strcmp(CLEAR, strupr(command1))) {
					ListClear();
					//Data Lock
				} else if (!strcmp(DATALOCK, strupr(command1))) {
					DataLock(command2);
				} else if (!strcmp(LOCKLIST, strupr(command1))) {
					ShowLockDataList();
				} else {
					printf("Main Command Input Error!\n");
				}
			} else {
				ListClear();
				printf("%s\n", errorMsgPid);
			}
		}
	}
	return 0;
}
コード例 #2
0
bool CISEMultiSession::SendQuotes(vector<CQuoteParams>& vecQuotes)
{
	CAutoLock	Lock(&m_MultiSessionLock);

	map<uint8, CBookRequests>	mapBook2Requests;

	{
		// check for connection state
		CAutoLock DataLock(this);

		if(IsLoaded() == false || m_bMultiSessionLoggedOn == false)
		{
			for(vector<CQuoteParams>::iterator itQuotes = vecQuotes.begin(); 
				itQuotes != vecQuotes.end(); itQuotes++)
			{
				itQuotes->m_SendResult.m_Error = enNotConnected;
				itQuotes->m_SendResult.m_sOrderID = "";
			}
			return false;
		}

		static quote_trans_mo106_t Mo106;
		static const int nMaxItems = /*1;*/sizeof(Mo106.item) / sizeof(quote_trans_mo106_item_t);

		{
			CAutoLock ClassesLock(&m_ISE.m_InstrumentClasses);
			CAutoLock UndLock(&m_ISE.m_Underlyings);
			CAutoLock SeriesLock(&m_ISE.m_Series);

			for(vector<CQuoteParams>::iterator itQuotes = vecQuotes.begin(); 
				itQuotes != vecQuotes.end(); itQuotes++)
			{
				// find series
				CSeries* pSeries = GetSeriesByRequest(itQuotes->m_sSeries);
				if(pSeries && pSeries->m_pUnderlying && pSeries->m_pInstrumentClass)
				{
					// check for premium
					if(itQuotes->m_dPremium == 0)
					{
						CDeleteQuoteRequest	DeleteRequest;

						DeleteRequest.m_Data.series = pSeries->m_Series;
						DeleteRequest.m_Data.orderbook_c = pSeries->m_pUnderlying->m_uiOrderbook;
						DeleteRequest.m_Data.bid_or_ask_c = itQuotes->m_BidOrAsk;

						//ThEN/B/ DeleteRequest.m_Data.order_category_n = ORDER_CAT_QUOTE;
						DeleteRequest.m_Data.order_category_filter_n = ORDER_CAT_QUOTE;
						//ThEN/E/
						

						{
							CAutoLock UserLock(&(CISESession0::m_User));

							StringToClickString(CISESession0::m_User.m_sCountryID, 
								sizeof(DeleteRequest.m_Data.whose.trading_code.country_id_s),
								DeleteRequest.m_Data.whose.trading_code.country_id_s);
							StringToClickString(CISESession0::m_User.m_sCustomerID, 
								sizeof(DeleteRequest.m_Data.whose.trading_code.ex_customer_s),
								DeleteRequest.m_Data.whose.trading_code.ex_customer_s);
						}

						DeleteRequest.m_Ref = &(*itQuotes);

						mapBook2Requests[pSeries->m_pUnderlying->m_uiOrderbook].m_DeleteRequests.push_back(DeleteRequest);
					}
					else
					{
						vector<CSubmitQuoteRequest>& vecSubmitRequests = 
							mapBook2Requests[pSeries->m_pUnderlying->m_uiOrderbook].m_SubmitRequests;

						if(vecSubmitRequests.size() == 0 || vecSubmitRequests.back().m_Data.items_n == nMaxItems)
							vecSubmitRequests.push_back(CSubmitQuoteRequest());

						CSubmitQuoteRequest& SubmitRequest = vecSubmitRequests.back();
						uint16_t& nItems = SubmitRequest.m_Data.items_n;

						SubmitRequest.m_Data.item[nItems].series = pSeries->m_Series;
						SubmitRequest.m_Data.item[nItems].open_quantity_u = itQuotes->m_lOpenQuantity;
						SubmitRequest.m_Data.item[nItems].premium_i = DBL2DEC(itQuotes->m_dPremium, pSeries->m_pInstrumentClass->m_uiDecInPremium);

						SubmitRequest.m_Data.item[nItems].quantity_u = itQuotes->m_lQuantity;
						SubmitRequest.m_Data.item[nItems].step_up_buffer_n = itQuotes->m_lQuantity;
						SubmitRequest.m_Data.item[nItems].bid_or_ask_c = itQuotes->m_BidOrAsk;
						nItems++;
						SubmitRequest.m_Refs.push_back(&(*itQuotes));
					}
				}
				else
				{
					itQuotes->m_SendResult.m_Error = enSymbolNotSupported;
					itQuotes->m_SendResult.m_sOrderID = "";
				}
			}
		}
	}


	map<uint8, CBookRequests >::iterator itBook;
	ErrorNumberEnum Error = enNoError;

	InitAsync();

	for(itBook = mapBook2Requests.begin(); itBook != mapBook2Requests.end(); itBook++)
	{
		CBookRequests& BookRequests = itBook->second;

		vector<CSubmitQuoteRequest>::iterator itSubmReq;
		for(itSubmReq = BookRequests.m_SubmitRequests.begin(); 
			itSubmReq != BookRequests.m_SubmitRequests.end();itSubmReq++)
		{
			CSubmitQuoteRequest& Req = *itSubmReq;
			Req.m_Data.orderbook_c = itBook->first;
			CallAsync(enArtSumbit, &Req);
		}

		vector<CDeleteQuoteRequest>::iterator itDelReq;
		for(itDelReq = BookRequests.m_DeleteRequests.begin(); 
			itDelReq != BookRequests.m_DeleteRequests.end();itDelReq++)
		{	
			CallAsync(enArtDelete, &(*itDelReq));
		}	
	}

	WaitAsyncComplete();

	// update cache
	CAutoLock SeriesLock(&m_ISE.m_Series);

	for(vector<CQuoteParams>::iterator itQuotes = vecQuotes.begin(); 
		itQuotes != vecQuotes.end(); itQuotes++)
	{
		const CQuoteParams& Quote = *itQuotes;
		if(Quote.m_SendResult.m_Error == enNoError)
		{
			// find series
			CSeries* pSeries = GetSeriesByRequest(itQuotes->m_sSeries);
			if(pSeries)
			{
				pSeries->UpdateQuoteCache(Quote, 0);
			}
		}
	}

	return true;
}