コード例 #1
0
af::Msg * JobAf::writeTask( int i_b, int i_t, const std::string & i_mode, bool i_binary) const
{
	std::ostringstream str;
	str << "{";

	if( false == checkBlockTaskNumbers( i_b, i_t, "writeTask"))
	{
		return af::jsonMsgError("Invalid block/task number.");
	}

	af::MCTask mctask( m_id, i_b, i_t);
	fillTaskNames( mctask);

	if( i_mode == "info" )
	{
		af::TaskExec * exec = generateTask( i_b, i_t);
		if( exec )
		{
			mctask.setExec( exec);
			return mctask.generateMessage( i_binary);
		}
	}
	else if( i_mode == "log" )
	{
		mctask.setLog( getTaskLog( i_b, i_t));
		return mctask.generateMessage( i_binary);
	}
	else if( i_mode == "error_hosts")
	{
		std::list<std::string> list;
		m_blocks[i_b]->m_tasks[i_t]->getErrorHostsList( list);
		mctask.setErrorHosts( list);
		return mctask.generateMessage( i_binary);
	}
	else if( i_mode == "files" )
	{
		if( i_binary )
			return m_blocks[i_b]->m_tasks[i_t]->getStoredFiles();
		else
			m_blocks[i_b]->m_tasks[i_t]->getStoredFiles( str);
	}
	else if( i_mode == "output")
	{
		// "output" is processed in threadProcessJSON(),
		// as file reading or render update waiting can be needed.
		AF_ERR << "Mode is \"output\".";
	}

	str << "}";
	return af::jsonMsg( str);
}
コード例 #2
0
int main()
{
	// not recommended to do something with sizes :(
	COORD size = {9, 8};
	drawTable(size);

	// task - aim, request - user input
	i4 task(generateTask());
	i4 request;

	// index to watch which digit user is entered
	// line - offset for the log output
	int index = 0, line = 4;
	
	bool bQuit = false;
	while (!bQuit)
	{
		char ch[] = {readKey(), '\0'};
		int code = (int)(ch[0]);

		// if input is digit
		if (code > 47 && code < 58 && index < 4)
		{
			int num = code - 48;
			bool bDublicate = false;
			for (int i = 0; i < index; ++i)
			{
				if (request[i] == num)
				{
					bDublicate = true;
					break;
				}
			}

			if (bDublicate)
				continue;

			request[index] = num;
			++index;
			print({2 + index, 1}, ch);
		}

		// if input is erase
		if (code == KEY_BACK && index > 0)
			print({2 + index--, 1}, "_");

		// if input is confirm
		if (code == KEY_ENTER && index == 4)
		{
			print({3, 1}, "____");
			i2 fb = getFeedback(request, task);

			// hard way to do simple thing
			char c[] = {
				request[0] + 48,
				request[1] + 48,
				request[2] + 48,
				request[3] + 48,
				' ',
				fb[0] + 48,
				':',
				fb[1] + 48,
				'\0'
			};
			print({1, line}, c);
			++line;
			index = 0;

			// make the table longer if needed
			if (line > size.Y-1)
			{
				print({0, size.Y}, "|");
				print({size.X, size.Y}, "|");
				++size.Y;
			}

			// win event
			if (fb[0] == 4)
			{
				for (int i = 0; i < size.X-1; ++i)
					print({1 + i, line}, "!");

				readKey();
				break;
			}
		}

		// if input is exit
		if (code == KEY_ESC)
			return 0;
		//printf("%d", code);
	}
	clearScreen();
	system("pause");
	return 0;
}