Exemple #1
0
void MsgClient::Stop( void )
{
	OUT_INFO("Msg",0,"MsgClient","stop");

	StopClient() ;

	_httpcaller.Stop() ;
}
Exemple #2
0
void ServerConnection::onReceiveWriteDataRowsResponseHeader()
{
	GenericReadResponseHeader responseHeader = *reinterpret_cast<GenericReadResponseHeader*>(_buffer);
	if(responseHeader.blockIdentifier != GenericReadResponseHeaderId || responseHeader.blockSize != sizeof(responseHeader))
	{
		_onError(shared_from_this(), "Bad response from client upon write data rows request");
		StopClient();
	}
	else if(responseHeader.errorCode != NoError)
	{
		handleError(responseHeader);
		_onAwaitingCommand(shared_from_this());
	}
	else if(responseHeader.dataSize != 0) {
		_onError(shared_from_this(), "Client sent unexpected data during write rows action");
		StopClient();
	} else {
		_onAwaitingCommand(shared_from_this());
	}
}
Exemple #3
0
/*----------------------------------------------------------------------
|   CUPnP::~CUPnP
+---------------------------------------------------------------------*/
CUPnP::~CUPnP()
{
    m_UPnP->Stop();
    StopClient();
    StopServer();

    delete m_UPnP;
    delete m_ServerHolder;
    delete m_RendererHolder;
    delete m_CtrlPointHolder;
}
void RemoteDebuggerProxy::Shutdown()
{
    if ( mSessionGuid != GUID_NULL )
    {
        // When you close the client interface to the remote agent (Cmd), the agent closes its
        // client interface to the debug engine (Event). To allow that call back, stop the client
        // before stopping the server.

        StopClient( mhContext );
        StopServer();
    }
}
void CVechileMgr::Stop( void )
{
	if ( ! _vechile_inited )
		return ;
	_vechile_inited = false ;

	StopClient() ;

	_send_thread.stop() ;

	_bench.Stop() ;
}
TEST_F(SSFFixtureTest, ConnectToUnknownHost) {
  // Init timer (if client hangs)
  boost::system::error_code timer_ec;
  auto timer_callback = [this](const boost::system::error_code& ec) {
    EXPECT_NE(0, ec.value()) << "Timer should be canceled. Client is hanging";
    if (!ec) {
      SendNotification(false);
    }
  };
  StartTimer(std::chrono::seconds(5), timer_callback, timer_ec);

  auto client_callback = [this](ssf::Status status) {
    switch (status) {
      case ssf::Status::kEndpointNotResolvable:
      case ssf::Status::kServerUnreachable:
        SSF_LOG("test", critical, "Network initialization failed");
        SendNotification(true);
        break;
      case ssf::Status::kServerNotSupported:
        SSF_LOG("test", critical, "Transport initialization failed");
        SendNotification(false);
        break;
      case ssf::Status::kConnected:
        SendNotification(false);
        break;
      case ssf::Status::kDisconnected:
        SSF_LOG("test", info, "client: disconnected");
        break;
      case ssf::Status::kRunning:
        SendNotification(false);
        break;
      default:
        break;
    }
  };

  boost::system::error_code run_ec;
  StartClient("16000", client_callback, run_ec);
  ASSERT_EQ(0, run_ec.value()) << "Could not start client";

  // Wait client action
  WaitNotification();

  EXPECT_TRUE(IsNotificationSuccess()) << "Stop failed";

  StopClient();
  StopTimer();
}
Exemple #7
0
void ServerConnection::onReceiveReadDataRowsResponseHeader()
{
	GenericReadResponseHeader responseHeader = *reinterpret_cast<GenericReadResponseHeader*>(_buffer);
	if(responseHeader.blockIdentifier != GenericReadResponseHeaderId || responseHeader.blockSize != sizeof(responseHeader))
	{
		_onError(shared_from_this(), "Bad response from client upon read data rows request");
		StopClient();
	}
	else if(responseHeader.errorCode != NoError)
	{
		handleError(responseHeader);
		_onAwaitingCommand(shared_from_this());
	}
	else {
		prepareBuffer(responseHeader.dataSize);
		boost::asio::async_read(_socket, boost::asio::buffer(_buffer, responseHeader.dataSize),
			boost::bind(&ServerConnection::onReceiveReadDataRowsResponseData, shared_from_this(), responseHeader.dataSize));
	}
}
CComplSocketClient::~CComplSocketClient(void)
{
	StopClient();
}
Exemple #9
0
int main(int argc, char *argv[])
{
    char buffer[512], prog_name[512], sTemp[256];
    int  nret, i, share_size, count;
    int  shm_id;
    int  shm_need_init;
    int  bRet;

    /*检测程序启动参数是否正确*/
    if (CheckParam(argc, argv) == -1)
    {
        return 0;
    }

    strcpy(buffer, argv[0]);
    split_str(buffer, prog_name, "/", 1, 1, 1, 1);

    /*检测程序是否已经在后台运行*/
    if (strcmp(argv[1], "start") != 0)
    {
        if ( !if_program_running(prog_name) )
        {
            WriteLog(0, 0, OUT_SCREEN, "系统尚未启动");
            return 0;
        }
    }

    WriteLog(0, 0, OUT_SCREEN, "读取配置文件 ... ");
    if (GetInitInfo(argv[0]) == -1)
    {
        return 0;
    }
    /*WriteLog(0, 0, OUT_SCREEN, "OK !");*/

    if (strcmp(G_ini.cur_version, CURRENT_SERVER_VERSION) != 0)
    {
        WriteLog(0, 0, OUT_SCREEN, "程序版本错误,禁止运行!");
        return 0;
    }

    G_shm = NULL;
    G_ctrl_data = NULL;
    G_trans_buffer = NULL;

    WriteLog(0, 0, OUT_SCREEN, "读取共享内存 ... ");
    shm_need_init = 0;
    if (strcmp(argv[1], "start") == 0 && argc == 2)
    {
        if (atoi(sTemp) > 1)
        {
            WriteLog(0, 0, OUT_SCREEN, "系统已经执行完成该命令");
            return 0;
        }

        share_size = G_ini.proc_num * ((int)sizeof(struct SHM_CONF)) + (int)sizeof(struct SHM_HEAD);
        shm_id = shmget((key_t)G_ini.shm_key, (size_t)share_size, IPC_CREAT | IPC_EXCL | 0777);
        shm_need_init = 1;

        bRet = sem_requ(G_ini.sem_key, 1, 1);
    }
    else
    {
        shm_id = shmget((key_t)G_ini.shm_key, 0, 0777);
        bRet = sem_get(G_ini.sem_key, 1);
    }
    if (shm_id < 0)
    {
        /*EEXIST 17 File exists*/
        WriteLog(0, 0, OUT_SCREEN, " shmget error(%d):%s", errno, strerror(errno));
        FreeShm(shm_id);
        return 0;
    }
    if (bRet == SEM_ERROR)
    {
        WriteLog(0, 0, OUT_SCREEN, " semget error:%s", gs_sem_err);
        FreeShm(shm_id);
        return 0;
    }

    G_shm = (char *)shmat(shm_id, 0, 0);
    if (G_shm == (void *)-1)
    {
        WriteLog(0, 0, OUT_SCREEN, " shmat error(%d):%s", errno, strerror(errno));
        FreeShm(shm_id);
        return 0;
    }

    if (shm_need_init == 1)
    {
        /*共享内存初试化*/
        InitShm();
    }
    else
    {
        if (ShmConfCheck() == -1)
        {
            WriteLog(0, 0, OUT_SCREEN, "INI文件在启动之后被修改过,禁止执行当前指令!");
            if (shm_need_init == 1)
            {
                FreeShm(shm_id);
            }
            return 0;
        }
    }

    /*WriteLog(0, 0, OUT_SCREEN, "OK !");*/

    if (strcmp(argv[1], "stop") == 0 || strcmp(argv[1], "query") == 0 || strcmp(argv[1], "refresh") == 0)
    {
        strcpy(buffer, argv[0]);
        split_str(buffer, prog_name, "/", 1, 1, 1, 1);

        if (strcmp(argv[1], "query") == 0)
        {
            QueryClient(prog_name);
        }

        if (strcmp(argv[1], "refresh") == 0)
        {
            if (argc != 3)
            {
                RefreshParam(prog_name, 0);
            }
            else
            {
                RefreshParam(prog_name, atoi(argv[2]));
            }
        }

        if (strcmp(argv[1], "stop") == 0)
        {
            WriteLog(0, 0, OUT_SCREEN, "server stop ...");
            if (argc != 3)
            {
                StopClient(prog_name, 0);
            }
            else
            {
                StopClient(prog_name, atoi(argv[2]));
            }
        }

        if (strcmp(argv[1], "refresh") != 0)
        {
            if (GetRunCount() == 0)
            {
                /*WriteLog(0, 0, OUT_SCREEN, "释放资源 ...");*/
                FreeShm(shm_id);
            }
        }
        return 0;
    }




    /****************************************************************************************/
    count = 0;

    for (i = 0 ; i < G_ini.port_num ; i++)
    {

        if (argc != 2)
        {
            if (atoi(argv[2]) != G_ini.port_list[i].lsnr_port)
            {
                continue;
            }
        }

        WriteLog(0, 0, OUT_SCREEN, "\n启动:%s接口,port=[%d]", G_ini.port_list[i].name, G_ini.port_list[i].lsnr_port);
        nret = StartPort(G_ini.port_list[i].lsnr_port, G_ini.port_list[i].lsnr_num, G_ini.port_list[i].lsnr_len, G_ini.port_list[i].is_reuse_addr);

        FreeResource();
        if (nret < 0)
        {
            continue;
        }

        count++;
    }

    if (count == 0)
    {
        WriteLog(0, 0, OUT_SCREEN, "系统启动失败,释放系统资源!");
        FreeShm(shm_id);
    }
    else
    {
        WriteLog(0, 0, OUT_SCREEN, "系统启动指令执行完成!");
        sleep(2);
        if (GetRunCount() == 0)
        {
            WriteLog(0, 0, OUT_SCREEN, "进程启动失败");
            FreeShm(shm_id);
        }
    }

    return 0;
}
Exemple #10
0
void TcpClient::Stop(void) {
	StopClient();
}
Exemple #11
0
void PasClient::Stop( void )
{
	_busloader.Stop() ;
	StopClient() ;
}
TEST_F(SSFFixtureTest, CloseWhileConnecting) {
  // Init server
  int server_port = 15000;
  boost::asio::ip::tcp::acceptor server(get_io_service());
  InitTCPServer(server, server_port);

  // Init timer (if client hangs)
  boost::system::error_code timer_ec;
  auto timer_callback = [this](const boost::system::error_code& ec) {
    EXPECT_NE(0, ec.value()) << "Timer should be canceled. Client is hanging";
    if (!ec) {
      SendNotification(false);
    }
  };
  StartTimer(std::chrono::seconds(20), timer_callback, timer_ec);
  ASSERT_EQ(0, timer_ec.value()) << "Could not start timer";

  // Init client
  auto client_callback = [this](ssf::Status status) {
    switch (status) {
      case ssf::Status::kEndpointNotResolvable:
      case ssf::Status::kServerUnreachable:
        SSF_LOG("test", critical, "Network initialization failed");
        SendNotification(true);
        break;
      case ssf::Status::kServerNotSupported:
        SSF_LOG("test", critical, "Transport initialization failed");
        SendNotification(true);
        break;
      case ssf::Status::kConnected:
        SendNotification(true);
        break;
      case ssf::Status::kDisconnected:
        SSF_LOG("test", info, "client: disconnected");
        break;
      case ssf::Status::kRunning:
        SendNotification(false);
        break;
      default:
        break;
    }
  };
  boost::system::error_code run_ec;
  StartClient(std::to_string(server_port), client_callback, run_ec);
  ASSERT_EQ(0, run_ec.value());

  // Wait new server connection
  boost::asio::ip::tcp::socket socket(get_io_service());
  server.async_accept(socket, [this](const boost::system::error_code& ec) {
    EXPECT_EQ(0, ec.value()) << "Accept connection in error";
    // Stop client while connecting
    StopClient();
  });

  // Wait client action
  WaitNotification();

  EXPECT_TRUE(IsNotificationSuccess()) << "Stop failed";

  StopTimer();
  boost::system::error_code close_ec;
  socket.close(close_ec);
  server.close(close_ec);
}
Exemple #13
0
CgcUdpClient::~CgcUdpClient(void)
{
	StopClient();
}
Exemple #14
0
void CGameControllerEXP::Tick()
{
	IGameController::Tick();

	TickBots();
	TickEnvironment();

	for(int fi = 0; fi < m_CurFlag+1; fi++)
	{
		CFlag *f = NULL;
		if(fi == m_CurFlag)
			f = m_FlagEnd;
		else
			f = m_aFlagsCP[fi];
		if(!f) // if there isn't flag end
			continue;
		
		CCharacter *apCloseCharacters[MAX_CLIENTS];
		int Num = GameServer()->m_World.FindEntities(f->GetPos(), CFlag::ms_PhysSize, (CEntity**)apCloseCharacters, MAX_CLIENTS, CGameWorld::ENTTYPE_CHARACTER);
		for(int i = 0; i < Num; i++)
		{
			if(!apCloseCharacters[i]->IsAlive() || apCloseCharacters[i]->GetPlayer()->IsBot() || apCloseCharacters[i]->GetPlayer()->GetTeam() == -1)
				continue;
			int id = apCloseCharacters[i]->GetPlayer()->GetCID();
			
			if(fi == m_CurFlag)
			{
				// END
				if(!m_Boss.m_Exist || GameServer()->m_apPlayers[id]->m_GameExp.m_BossKiller)
					StopClient(id);
			}
			else
			{
				// REGEN
				if((float)Server()->Tick() > apCloseCharacters[i]->GetPlayer()->m_GameExp.m_RegenTimer + GameServer()->Tuning()->m_RegenTimer*Server()->TickSpeed())
				{
					if(apCloseCharacters[i]->m_Health < 10) //regen health
					{
						apCloseCharacters[i]->m_Health++;
						apCloseCharacters[i]->GetPlayer()->m_GameExp.m_RegenTimer = (float)Server()->Tick();
					}
					else if(apCloseCharacters[i]->m_Armor < apCloseCharacters[i]->GetPlayer()->m_GameExp.m_ArmorMax) //regen armor
					{
						apCloseCharacters[i]->m_Armor++;
						apCloseCharacters[i]->GetPlayer()->m_GameExp.m_RegenTimer = (float)Server()->Tick();
					}
					else // regen ammo
					{
						int WID = apCloseCharacters[i]->m_ActiveWeapon;
						if(apCloseCharacters[i]->m_aWeapons[WID].m_Ammo != -1)
						{
							int MaxAmmo = g_pData->m_Weapons.m_aId[WID].m_Maxammo;
							if(apCloseCharacters[i]->m_aWeapons[WID].m_Ammo < MaxAmmo)
							{
								apCloseCharacters[i]->m_aWeapons[WID].m_Ammo++;
								apCloseCharacters[i]->GetPlayer()->m_GameExp.m_RegenTimer = (float)Server()->Tick();
							}
						}
					}
				}

				// SAVE
				if(apCloseCharacters[i]->GetPlayer()->m_GameExp.m_LastFlag != fi+1)
				{
					apCloseCharacters[i]->GetPlayer()->m_GameExp.m_LastFlag = fi+1;
					GameServer()->SendChatTarget(apCloseCharacters[i]->GetPlayer()->GetCID(), "Checkpoint reached.");
					//apCloseCharacters[i]->GetPlayer()->m_GameExp.m_SaveTimer = (float)Server()->Tick() + 5.0f*Server()->TickSpeed();
				}
			}
		}
	}
}
Exemple #15
0
void MsgClient::Stop(void)
{
	OUT_INFO("Msg", 0, "MsgClient", "stop");

	StopClient();
}