当前位置: 首页>>代码示例>>C++>>正文


C++ Server::Connect方法代码示例

本文整理汇总了C++中Server::Connect方法的典型用法代码示例。如果您正苦于以下问题:C++ Server::Connect方法的具体用法?C++ Server::Connect怎么用?C++ Server::Connect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Server的用法示例。


在下文中一共展示了Server::Connect方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: hash

MemCacheClient::Server *
MemCacheClient::FindServer(
    const string_t & a_sKey
    )
{
    // probably need some servers for this
    if (m_rgServerHash.empty()) {
        return NULL;
    }

    // find the next largest consistent hash value above this key hash
    ConsistentHash hash(CreateKeyHash(a_sKey.data()), NULL);
    std::vector<ConsistentHash>::iterator iServer = 
        std::lower_bound(m_rgServerHash.begin(), m_rgServerHash.end(), hash);
    if (iServer == m_rgServerHash.end()) {
        iServer = m_rgServerHash.begin();
    }

    // ensure that this server is connected 
    Server * pServer = iServer->mServer;
    if (!pServer->Connect(m_nTimeoutMs)) {
        return NULL;
    }
    return pServer;
}
开发者ID:dalinhuang,项目名称:loosoft,代码行数:25,代码来源:MemCacheClient.cpp

示例2: CR_ASSERT

MemCacheClient::Server *
MemCacheClient::FindServer(
    const string_t & aKey,
    unsigned         aService
    )
{
#ifdef CROSSBASE_API
    // in our private usage of this, the service must never be 0
    if (aService == 0) {
        mTrace.Trace(CLERROR, "FindServer: no service requested, supplied cache server may not be appropriate!!!");
        CR_ASSERT(!"FindServer: no service requested, supplied cache server may not be appropriate!!!");
    }
#endif

    // probably need some servers for this
    if (mServerHash.empty()) {
        //mTrace.Trace(CLDEBUG, "FindServer: server hash is empty");
        return NULL;
    }

    // find the next largest consistent hash value above this key hash
    ConsistentHash hash(CreateKeyHash(aKey.data()), NULL, 0, 0);
    std::vector<ConsistentHash>::iterator iBegin = mServerHash.begin();
    std::vector<ConsistentHash>::iterator iEnd = mServerHash.end();
    std::vector<ConsistentHash>::iterator iCurr = std::lower_bound(iBegin, iEnd, hash);
    if (iCurr == iEnd) iCurr = iBegin;

    // now find the next server that handles this service
    if (aService != 0) {
        //int nSkipped = 0;
        std::vector<ConsistentHash>::iterator iStart = iCurr;
        while (!iCurr->services(aService)) {
            //++nSkipped;
            ++iCurr; 
            if (iCurr == iEnd) iCurr = iBegin;
            if (iCurr == iStart) {
                mTrace.Trace(CLDEBUG, "FindServer: no server for required service: %u", aService);
                return NULL;
            }
        }
        //if (nSkipped > 0) mTrace.Trace(CLDEBUG, "skipped %d servers for service: %u", nSkipped, aService);
    }

    // ensure that this server is connected 
    Server * pServer = iCurr->mServer;
    Server::ConnectResult rc = pServer->Connect(mTimeoutMs, mRetryMs);
    switch (rc) {
    case Server::CONNECT_SUCCESS:
        //mTrace.Trace(CLDEBUG, "FindServer: using server %s", pServer->GetAddress());
        return pServer;
    case Server::CONNECT_WAITING:
        return NULL;
    default:
    case Server::CONNECT_FAILED:
        //mTrace.Trace(CLDEBUG, "FindServer: failed to connect to server %s", pServer->GetAddress());
        return NULL;
    }
}
开发者ID:ucrmk,项目名称:memcacheclient,代码行数:58,代码来源:MemCacheClient.cpp

示例3:

int
main(int argc, char **argv)
{
		Server srv;

		srv.Connect();
		srv.process();

	return 0;
}
开发者ID:baoson2211,项目名称:Console-Chat-Linux,代码行数:10,代码来源:main_srv.cpp

示例4: test

int
MemCacheClient::FlushAll(
    const char *    aServer, 
    int             aExpiry
    )
{
    char szRequest[50];
    snprintf(szRequest, sizeof(szRequest), 
        "flush_all %u\r\n", aExpiry);

    Server test(mTrace);
    if (aServer && !test.Set(aServer)) {
        return false;
    }

    int nSuccess = 0;
    for (size_t n = 0; n < mServer.size(); ++n) {
        Server * pServer = mServer[n];
        if (aServer && *pServer != test) continue;
    
        // ensure that we are connected
        if (pServer->Connect(mTimeoutMs, mRetryMs) != Server::CONNECT_SUCCESS) {
            continue;
        }

        try {
            // request
            pServer->SendBytes(szRequest, strlen(szRequest));

            // response
            string_t sValue;
            sValue = pServer->GetByte();
            while (sValue[sValue.length()-1] != '\n') {
                sValue += pServer->GetByte();
            }
            if (sValue == "OK\r\n") {
                // done
                ++nSuccess;
            }
            else {
                // unknown response, connection may be bad
                pServer->Disconnect();
            }
        }
        catch (const Socket::Exception &) {
            mTrace.Trace(CLINFO, "socket error, ignoring flush request");
            // data error
        }
    }

    return nSuccess;
}
开发者ID:ucrmk,项目名称:memcacheclient,代码行数:52,代码来源:MemCacheClient.cpp

示例5: snprintf

int
MemCacheClient::FlushAll(
    const char *    a_pszServer, 
    int             a_nExpiry
    )
{
    char szRequest[50];
    snprintf(szRequest, sizeof(szRequest), 
        "flush_all %u\r\n", a_nExpiry);

    Server test;
    if (a_pszServer && !test.Set(a_pszServer)) return false;

    int nSuccess = 0;
    for (size_t n = 0; n < m_rgpServer.size(); ++n) {
        Server * pServer = m_rgpServer[n];
        if (a_pszServer && *pServer != test) continue;
    
        // ensure that we are connected
        if (!pServer->Connect(m_nTimeoutMs)) {
            continue;
        }

        try {
            // request
            pServer->SendBytes(szRequest, strlen(szRequest));

            // response
            string_t sValue;
            sValue = pServer->GetByte();
            while (sValue[sValue.length()-1] != '\n') {
                sValue += pServer->GetByte();
            }
            if (sValue == "OK\r\n") {
                // done
                ++nSuccess;
            }
            else {
                // unknown response, connection may be bad
                pServer->Disconnect();
            }
        }
        catch (const ServerSocket::Exception &) {
            // data error
        }
    }

    return nSuccess;
}
开发者ID:dalinhuang,项目名称:loosoft,代码行数:49,代码来源:MemCacheClient.cpp

示例6: main

int main(){
    srand(time(0));
    key_t key = MAX_CLIENT_SIZE * 5;
    int server_shm_id = shmget(key, sizeof(Server), 0666|IPC_CREAT);    
    if(server_shm_id == -1){
        perror("shared memory error");
        return 1;
    }
    Server *shm = (Server*)shmat(server_shm_id, (void*)0, 0);
    Server *server = new(shm) Server(PORT, MAX_EPOLL_SIZE);
    server->shm_id = server_shm_id;
    for(int i=0;i<MAX_CLIENT_SIZE;i++){
        server->msg[i].key = MAX_CLIENT_SIZE+i;
        shm_sem_create(server->msg[i].key, 1);
        server->msg[i].id = shm_sem_open(server->msg[i].key);
    }
	signal(SIGCHLD, zombie_handler);
	if(server->Connect() != 0)return 0;
	server->Run();
	return 0;
}
开发者ID:allenwhale,项目名称:np,代码行数:21,代码来源:server.cpp

示例7: Main


//.........这里部分代码省略.........

                }

                }
                break;
                case 8:
                cout << "Mission overview (Like in Patapon 2 yay)" << endl;
                break;
                case 9:
                cout << "World map biatch" << endl;
                break;
                case 13:
                static Organization organization(savecontainer);
                if(oplaysnd == true)
                if(organization.bgm.getStatus() != sf::Music::Playing)
                organization.bgm.play();
                organization.selected = oselected;
                organization.menu1selected = m1selected;
                organization.menu2selected = m2selected;
                organization.menu2open = menu2open;
                organization.selected2 = pataselected;
                organization.Draw(window,this);
                break;
                case 34:
                static DemoMenu demomenu;
                cout << "uh, hi?" << endl;
                missionloaded = false;

                if(dmenureset == true) {
                organization.bgm.stop();
                m1selected = 0;
                m2selected = 0;
                menu2open = false;
                demomenu.azito.play();
                demomenu.clock.restart();
                dmenureset = false;
                }
                demomenu.completed = savecontainer.demopass;
                demomenu.sel = dmenuselect;
                demomenu.Draw(window,this);
                break;
                case 69:
                static Client client;
                static int c = 0;
                if(c==0) {
                missionloaded = false;
                string ip;
                cout << "input ip you want to connect" << endl;
                cin >> ip;
                client.Connect(ip.c_str());
                c++;
                }
                static Tips tipsmulti(this);
                if(missionloaded==false)
                if(tipsmulti.needsrefresh == true){
                cout << "refresh'd" << endl;
                tipsmulti.refresh(this);
                }
                if(missionloaded==false)
                tipsmulti.Draw(window,this,2);
                if(tipsmulti.finished==true) {
                static Mission mission;
                if(mission.loaded==false)
                mission.Load("multimission_1.map",window);
                if(missionloaded==true) {
                mission.Draw(window,commandbuffer,this);
                client.Multiplayer();
                client.Draw(window,mission);
                }}
                break;
                case 666:
                static Server server;
                static int s = 0;
                if(s==0) {
                missionloaded = false;
                string ip;
                cout << "input ip you want to host" << endl;
                cin >> ip;
                server.Connect(ip.c_str());
                s++;
                }
                static Tips tipsmulti2(this);
                if(missionloaded==false)
                if(tipsmulti2.needsrefresh == true){
                cout << "refresh'd" << endl;
                tipsmulti2.refresh(this);
                }
                if(missionloaded==false)
                tipsmulti2.Draw(window,this,2);
                if(tipsmulti2.finished==true) {
                static Mission mission;
                if(mission.loaded==false)
                mission.Load("multimission_1.map",window);
                if(missionloaded==true) {
                mission.Draw(window,commandbuffer,this);
                server.Multiplayer();
                server.Draw(window,mission);
                }}
                break;
            }
开发者ID:MaciekP42,项目名称:Patafour,代码行数:101,代码来源:Patafour.cpp


注:本文中的Server::Connect方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。