void worker(void)
{
	EMQ::Client client(ADDR, EMQ_DEFAULT_PORT);
	const std::string &test_message = "Hello EagleMQ";
	EMQ::Message message((void*)test_message.c_str(), test_message.length() + 1, true);
	bool status;
	int i;

	if (client.connected())
	{
		std::cout << YELLOW("[Success]") << " [Worker] Connected to "
			<< ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;

		status = client.auth("eagle", "eagle");
		CHECK_STATUS("[Worker] Auth", status);

		for (i = 0; i < MESSAGES / 2; i++)
		{
			status = client.channel.publish(".channel-test", "world.russia.moscow", message);
			CHECK_STATUS("[Worker] Channel publish", status);
			status = client.channel.publish(".channel-test", "world.belarus.minsk", message);
			CHECK_STATUS("[Worker] Channel publish", status);
			sleep(1);
		}

		client.disconnect();
	}
	else
	{
		std::cout << RED("[Error]") << " Error connect to " << ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;
	}
}
示例#2
0
static inline
int IsKnownOrIgnoredToken(GLArbToken* ArbHash, GLToken* Token, GLSettings* Settings)
{
  int Found = 0;
  GLArbToken* ArbToken = GetToken(ArbHash, Token->Hash);
  if (ArbToken)
  {
    Found = 1;
  }
  else
  {
    for (int IgnoredIndex = 0; IgnoredIndex < Settings->IgnoreCount; ++IgnoredIndex)
    {
      if (Equal(Token->Value, Settings->Ignores[IgnoredIndex]))
      {
        Found = 1;
        break;
      }
    }
    if (!Found)
    {
      fprintf(stderr, YELLOW("WARNING") ": Token not found in header: %" PRI_STR "\n",
             Token->Value.Length, Token->Value.Chars);
    }
  }
  return Found;
}
int queue_message_callback(emq_client *_client, int, const char *name, const char *, const char *, emq_msg *msg)
{
	EMQ::Client client(_client);
	EMQ::Message message(msg);

	printf(YELLOW("[Success]") " [Event] Message \'%s\' in queue %s\n", (char*)emq_msg_data(msg), name);

	if (++message_counter >= MESSAGES)
	{
		client.set_noack_mode(true);
		std::cout << YELLOW("[Success]") << " [Event] Queue unsubscribe" << std::endl;
		client.queue.unsubscribe(".queue-test");
		client.set_noack_mode(false);
		return 1;
	}

	return 0;
}
int channel_message_callback(emq_client *_client, int /*type*/, const char *name,
	const char *topic, const char *pattern, emq_msg *msg)
{
	EMQ::Client client(_client);
	EMQ::Message message(msg);

	printf(YELLOW("[Success]") " [Event] Message \'%s\' (channel: %s, pattern: %s, topic: %s) \n",
		(char*)message.data(), name, pattern, topic);

	if (++message_counter >= MESSAGES)
	{
		client.set_noack_mode(true);
		std::cout << YELLOW("[Success]") << " [Event] Channel punsubscribe" << std::endl;
		client.channel.punsubscribe(".channel-test", "world.belarus.*");
		client.set_noack_mode(false);
		return 1;
	}

	return 0;
}
int main(void)
{
	EMQ::Client client(ADDR, EMQ_DEFAULT_PORT);
	bool status;

	std::cout << MAGENTA("This is a simple example of using libemq++") << std::endl;

	if (!EMQ::compatible())
	{
		std::cout << RED("[Warning]") << " Used incompatible version libemq" << std::endl;
	}

	if (client.connected())
	{
		std::cout << YELLOW("[Success]") << " Connected to " << ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;

		status = client.auth("eagle", "eagle");
		CHECK_STATUS("Auth", status);

		status = client.queue.create(".queue-test", 10, 100, EMQ_QUEUE_FORCE_PUSH | EMQ_QUEUE_AUTODELETE);
		CHECK_STATUS("Queue create", status);

		status = client.queue.declare(".queue-test");
		CHECK_STATUS("Queue declare", status);

		status = client.queue.subscribe(".queue-test", EMQ_QUEUE_SUBSCRIBE_MSG, queue_message_callback);
		CHECK_STATUS("Queue subscribe", status);

		std::thread thread = std::thread(worker);

		status = client.process();
		CHECK_STATUS("Channel process", status);

		thread.join();

		client.disconnect();
	}
	else
	{
		std::cout << RED("[Error]") << " Error connect to " << ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;
	}

	return 0;
}
int main(void)
{
	EMQ::Client client(ADDR, EMQ_DEFAULT_PORT);
	bool status;

	std::cout << MAGENTA("This is a simple example of using libemq++") << std::endl;

	if (!EMQ::compatible())
	{
		std::cout << RED("[Warning]") << " Used incompatible version libemq" << std::endl;
	}

	if (client.connected())
	{
		std::cout << YELLOW("[Success]") << " Connected to " << ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;

		status = client.auth("eagle", "eagle");
		CHECK_STATUS("Auth", status);

		status = client.channel.create(".channel-test", EMQ_CHANNEL_AUTODELETE | EMQ_CHANNEL_ROUND_ROBIN);
		CHECK_STATUS("Channel create", status);

		status = client.channel.psubscribe(".channel-test", "world.belarus.*", channel_message_callback);
		CHECK_STATUS("Channel psubscribe", status);

		std::thread thread1 = std::thread(worker);
		std::thread thread2 = std::thread(worker);

		status = client.process();
		CHECK_STATUS("Channel process", status);

		thread1.join();
		thread2.join();

		client.disconnect();
	}
	else
	{
		std::cout << RED("[Error]") << " Error connect to " << ADDR << ":" << EMQ_DEFAULT_PORT << std::endl;
	}

	return 0;
}
示例#7
0
文件: Main.c 项目: Dev-XYS/Tester
void PrintResult()
{
	FILE *ResultFileDescriptor = fopen("RESULT", "r");
	if (ResultFileDescriptor == NULL)
	{
		printf("JF\n");
		return;
	}
	char Temp[256];
	int BriefResult;
	int TimeUsed;
	int MemoryUsed;
	fscanf(ResultFileDescriptor, "%s%d%s%d%s%d", Temp, &BriefResult, Temp, &TimeUsed, Temp, &MemoryUsed);
	fclose(ResultFileDescriptor);
	switch (BriefResult)
	{
	case TR_AC:
		printf(GREEN(" AC"));
		break;
	case TR_WA:
		printf(RED(" WA"));
		break;
	case TR_RE:
		printf(YELLOW(" RE"));
		break;
	case TR_TLE:
		printf(RED("TLE"));
		break;
	case TR_MLE:
		printf(RED("MLE"));
		break;
	default:
		printf("---");
	}
	if (BriefResult == TR_TLE)
	{
		printf("         %8dKB\n", MemoryUsed);
	}
	else
	{
		printf("%6dms %8dKB\n", TimeUsed, MemoryUsed);
	}
}
示例#8
0
static void print_stack(void)
{
    static const char *const nts[] = {
        "Unit",
        "Stmt",
        "Assn",
        "Prnt",
        "Ctrl",
        "Cond",
        "Elif",
        "Else",
        "Dowh",
        "Whil",
        "Atom",
        "Expr",
        "Pexp",
        "Bexp",
        "Uexp",
        "Texp",
        "Aexp",
    };

    assert(sizeof(nts) / sizeof(*nts) == NT_COUNT);

    for (size_t i = 0; i < stack.size; ++i) {
        const struct node *const node = &stack.nodes[i];

        if (node->nchildren) {
            printf(YELLOW("%s "), nts[node->nt]);
        } else if (node->token->tk == TK_FBEG) {
            printf(GREEN("^ "));
        } else if (node->token->tk == TK_FEND) {
            printf(GREEN("$ "));
        } else {
            const ptrdiff_t len = node->token->end - node->token->beg;
            printf(GREEN("%.*s "), (int) len, node->token->beg);
        }
    }

    puts("");
}
示例#9
0
文件: verbose.cpp 项目: manyoso/hof
void Verbose::generateReplacementString(const CombinatorPtr& term1, const CombinatorPtr& term2)
{
    if (!isVerbose())
      return;

    QString from = term1->toString();
    QString to = term2->toString();
    if (from.isEmpty() || to.isEmpty())
        return;

    *m_stream << "  "
        << prefix()
        << YELLOW()
        << from
        << "->"
        << to
        << RESET()
        << postfix()
        << "\n";
    print();
}
示例#10
0
void am_warn(const char *pretty_func, const char *_file,
             int                line, const char *_format, ...)
{
  init();
  if (AM_UNLIKELY(AM_LOG_LEVEL_WARN <= logLevel)) {
    char text[2*1024]   = {0};
    char module[256]    = {0};
    char func[256]      = {0};
    char file[256]      = {0};
    char format[2*1024] = {0};
    va_list vlist;

    function_name(func, sizeof(func), pretty_func);
    class_name(module, sizeof(module), pretty_func);
    file_name(file, sizeof(file), _file);
    snprintf(format, sizeof(format), "%s", _format);
    if (format[strlen(format) - 1] == '\n') {
      //Eat trailing \n, \n will be added automatically!
      format[strlen(format) - 1] = '\0';
    }
    if (logTarget == AM_LOG_TARGET_SYSLOG) {
      sprintf(text, "[%6s][%s:%d: %s]: %s",
              "WARN", file, line, func, format);
    } else if (logTarget == AM_LOG_TARGET_FILE) {
      sprintf(text, "[%20s][%6s][%s:%d: %s]: %s",
              module, "WARN", file, line, func, format);
    } else {
      sprintf(text, "["B_GREEN("%20s")"]["B_YELLOW("%6s")"]"\
              CYAN("[%s:%d: %s]: ")YELLOW("%s"),
              module, "WARN", file, line, func, format);
    }
    va_start(vlist, _format);
    am_level_logv(module, AM_LOG_LEVEL_WARN, text, vlist);
    va_end(vlist);
  }
}
示例#11
0
//------------------------------------------------------------------------------
// ゲームの初期化
//------------------------------------------------------------------------------
// 引数
//  なし
// 戻り値
//  なし
//------------------------------------------------------------------------------
void CGame::Init(void)
{
	gamePhase = PHASE_3;
	gamePhaseCnt = 0;
	gameEndCount = 0;


	CSoundAL::Play(CSoundAL::BGM_GAME);
	//地形生成
	Ground = nullptr;
	Ground = CMeshGround::Create(VECTOR3(0.0f,0.0f,0.0f),VECTOR2(FIELD_PANEL_SIZE,FIELD_PANEL_SIZE),VECTOR2(0,0),1.5f);
	Ground->SetTex(CTexture::Texture(TEX_FIELD));

	// 空生成
	Sky = nullptr;
	Sky = CMeshSphere::Create(VECTOR3(0.0f,0.0f,0.0f),VECTOR2(16.0f,8.0f),RADIUS_SKY);
	Sky->SetTex(CTexture::Texture(TEX_SKY));

	// 境界線生成
	CylinderArea = nullptr;
	CylinderArea = CBattleAreaCylinder::Create(VECTOR3(0.0f,0.0f,0.0f),HEIGHT_WALL,VECTOR2(64.0f,1.0f),RADIUS_AREA_BATTLE,VECTOR2(1,-0.5f));
	CylinderArea->SetTex(CTexture::Texture(TEX_WALL));
	CylinderArea->SetAlpha(0.5f);

	Player = new CPlayer*[PLAYER_MAX];
	// プレイヤー生成
	for (int i = 0; i < PLAYER_MAX; i++)
	{
		if (i % 2 == 1)
			Player[i] = CPlayer::Create(CModel::RINCHAN,PLAYER_POSITION_LIST[i],i);
		else
			Player[i] = CPlayer::Create(CModel::YOUJO,PLAYER_POSITION_LIST[i],i);

		Player[i]->SetTex(CTexture::Texture(TEX_YOUJO_RED + i));
  Player[i]->SetDestRot(PLAYER_ROTATION_LIST[i]);
  Player[i]->SetRot(PLAYER_ROTATION_LIST[i]);
		Player[i]->setBarrelTex(TEX_YOUJO_RED + i);

		if (i == CManager::netData.charNum)
		{
			Player[i]->SetPlayerFlag(true);
			Player[i]->CreateBallistic();
		}
	}
		//プレイヤーカメラ生成
	CPlayerCamera::Create(Player[CManager::netData.charNum],35.0f);

	// 【テスト】各プレイヤーの色をセット
	for(int i = 0; i < PLAYER_MAX; i++)
	{
		switch(i)
		{
			// 赤
			case 0:
				Player[i]->SetPlayerColor(RED(0.5f));
				break;

			// 青
			case 1:
				Player[i]->SetPlayerColor(BLUE(0.5f));
				break;

			// 水
			case 2:
				Player[i]->SetPlayerColor(CYAN(0.5f));
				break;

			// 橙
			case 3:
				Player[i]->SetPlayerColor(COLOR(1.0f, 0.7f, 0.0f, 0.5f));
				break;
		
			// 白
			case 4:
				Player[i]->SetPlayerColor(WHITE(0.5f));
				break;

			// P
			case 5:
				Player[i]->SetPlayerColor(YELLOW(0.5f));
				break;

			default:
				break;
		}
	}

	// プレイヤーの入力を止める
	for (int i = 0; i < PLAYER_MAX; i++){
		Player[i]->SetInputFlag(false);
	}

	// UI初期化
	UI = new CUI;
	UI->Init();
	UI->setMyID(CManager::netData.charNum);
	UI->SetPlayer(Player);
	UI->MiniMap()->SetFieldSize(VECTOR3(RADIUS_AREA_BATTLE*2.25f,0,RADIUS_AREA_BATTLE*2.25f));

	// 岩の生成
	ppRock_ = new CModel*[MAX_ROCK];

	for (int cntRock = 0; cntRock < MAX_ROCK; ++cntRock)
	{
		ppRock_[cntRock] = CModel::Create(CModel::ROCK,ROCK_POSITION_LIST[cntRock]);
		ppRock_[cntRock]->SetRot(ROCK_ROTATION_LIST[cntRock]);
		ppRock_[cntRock]->SetScl(1,1,1);
		ppRock_[cntRock]->SetTex(CTexture::Texture(TEX_ROCK));
		PushBackObjectByField(ppRock_[cntRock], 10.0f);
	}

	// 影生成
	Shadow = new CShadow*[2 * PLAYER_MAX];
	for (int cntShadow = 0; cntShadow < 2 * PLAYER_MAX; ++cntShadow)
	{
		Shadow[cntShadow] = nullptr;
		Shadow[cntShadow] = CShadow::Create(VECTOR3(0.0f, 0.0f, 0.0f), VECTOR2(1.0f, 1.0f));
		if (cntShadow < PLAYER_MAX)
		{
			Shadow[cntShadow]->SetScl(30, 30, 30);
		}
		else
		{
			Shadow[cntShadow]->SetScl(20, 20, 20);
		}
		Shadow[cntShadow]->SetTex(CTexture::Texture(TEX_SHADOW));
	}

	CManager::gameStartFlag = true;

	CManager::sendGameStart();
}
示例#12
0
/*
 *time: level: process[pid]: [tid] tag: message
 *             [verbose          ]
 */
static int _log_print(int lvl, const char *tag,
                      const char *file, int line,
                      const char *func, const char *msg)
{
    int ret = 0, i = 0;
    struct iovec vec[LOG_IOVEC_MAX];
    char s_time[LOG_TIME_SIZE];
    char s_lvl[LOG_LEVEL_SIZE];
    char s_tag[LOG_TAG_SIZE];
    char s_pname[LOG_PNAME_SIZE];
    char s_pid[LOG_PNAME_SIZE];
    char s_tid[LOG_PNAME_SIZE];
    char s_file[LOG_TEXT_SIZE];
    char s_msg[LOG_BUF_SIZE];

    pthread_mutex_lock(&_log_mutex);
    log_get_time(s_time, sizeof(s_time), 0);

    if (_log_fp == stderr || _log_fd == STDERR_FILENO) {
        switch(lvl) {
        case LOG_EMERG:
        case LOG_ALERT:
        case LOG_CRIT:
        case LOG_ERR:
            snprintf(s_lvl, sizeof(s_lvl),
                    B_RED("[%7s]"), _log_level_str[lvl]);
            snprintf(s_msg, sizeof(s_msg), RED("%s"), msg);
            break;
        case LOG_WARNING:
            snprintf(s_lvl, sizeof(s_lvl),
                    B_YELLOW("[%7s]"), _log_level_str[lvl]);
            snprintf(s_msg, sizeof(s_msg), YELLOW("%s"), msg);
            break;
        case LOG_INFO:
            snprintf(s_lvl, sizeof(s_lvl),
                    B_GREEN("[%7s]"), _log_level_str[lvl]);
            snprintf(s_msg, sizeof(s_msg), GREEN("%s"), msg);
            break;
        case LOG_DEBUG:
            snprintf(s_lvl, sizeof(s_lvl),
                    B_WHITE("[%7s]"), _log_level_str[lvl]);
            snprintf(s_msg, sizeof(s_msg), WHITE("%s"), msg);
            break;
        default:
            snprintf(s_lvl, sizeof(s_lvl),
                    "[%7s]", _log_level_str[lvl]);
            snprintf(s_msg, sizeof(s_msg), "%s", msg);
            break;
        }
    } else {
        snprintf(s_lvl, sizeof(s_lvl),
                "[%7s]", _log_level_str[lvl]);
        snprintf(s_msg, sizeof(s_msg), "%s", msg);
    }
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_PIDTID_BIT)) {
        snprintf(s_pname, sizeof(s_pname), "[%s ", _proc_name);
        snprintf(s_pid, sizeof(s_pid), "pid:%d ", getpid());
        snprintf(s_tid, sizeof(s_tid), "tid:%d]", _gettid());
        snprintf(s_tag, sizeof(s_tag), "[%s]", tag);
        snprintf(s_file, sizeof(s_file), "[%s:%d: %s] ", file, line, func);
    }
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_FUNCLINE_BIT)) {
        snprintf(s_file, sizeof(s_file), "[%s:%d: %s] ", file, line, func);
    }

    i = -1;
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_TIMESTAMP_BIT)) {
        vec[++i].iov_base = (void *)s_time;
        vec[i].iov_len = strlen(s_time);
    }
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_PIDTID_BIT)) {
        vec[++i].iov_base = (void *)s_pname;
        vec[i].iov_len = strlen(s_pname);
        vec[++i].iov_base = (void *)s_pid;
        vec[i].iov_len = strlen(s_pid);
        vec[++i].iov_base = (void *)s_tid;
        vec[i].iov_len = strlen(s_tid);
    }
    vec[++i].iov_base = (void *)s_lvl;
    vec[i].iov_len = strlen(s_lvl);
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_TAG_BIT)) {
        vec[++i].iov_base = (void *)s_tag;
        vec[i].iov_len = strlen(s_tag);
    }
    if (CHECK_LOG_PREFIX(_log_prefix, LOG_FUNCLINE_BIT)) {
        vec[++i].iov_base = (void *)s_file;
        vec[i].iov_len = strlen(s_file);
    }
    vec[++i].iov_base = (void *)s_msg;
    vec[i].iov_len = strlen(s_msg);

    if (UNLIKELY(!_log_syslog)) {
        ret = _log_handle->write(vec, i+1);
    }
    pthread_mutex_unlock(&_log_mutex);
    return ret;
}