注册消息码

// exception.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <exception>
#include <vector>
#include <windows.h>
#include <list>
#include <vector>

using namespace std;

typedef struct client_t{
    int fd;
    int iMode;
    std::string file;
}CLIENT_T;


typedef struct cliInfo{
    cliInfo(int fd,int iMode, string file) : fd(fd), iMode(iMode), file(file){}
    void clearRegCode()
    {
        lsMsgCode.clear();
    }

    void delMsgCode(int msgcode)
    {
        list<int>::iterator it = lsMsgCode.begin();
        while(it != lsMsgCode.end())
        {
           // if();
        }
    }

    bool addMsgCode(int code)
    {
        if(isExist(code))
        {
            return false;
        }
        else
        {
            lsMsgCode.push_back(code);
            printf("add code %d \n", code);
            return true;
        }

    }

    bool isExist(int code)
    {
        list<int>::iterator it = lsMsgCode.begin();
        while(it != lsMsgCode.end())
        {
            if(code == *it)
            {
                return true;
            }
            ++it;
        }
        return false;
    }


    int fd;
    int iMode;
    std::string file;
    std::list<int> lsMsgCode;
}CLIINFO_T;

class CClientsManager{
public:
    CClientsManager(){}
    ~CClientsManager(){}

    bool addClient(CLIINFO_T cliifo)
    {
        list<CLIINFO_T>::iterator it = registed.begin();
       
        while(it != registed.end())
        {
            if(cliifo.fd == it->fd)
            {
                printf("该fd已存在,注册失败。\n");
                return false;
            }
            ++it;
        }

        registed.push_back(cliifo);
        printf("fd:%d已经注册成功\n", cliifo.fd);
        return true;
    }

    bool delClient(int fd)
    {

        return true;
    }

    //给客户端注册消息码
    bool clientRegMsgCode(int fd, int msgcode)
    {
        list<CLIINFO_T>::iterator it = registed.begin();
        while(it!=registed.end())
        {
            ++it;
        }
    }

    //现实所有客户端注册信息
    void showClientInfo()
    {
        list<CLIINFO_T>::iterator it = registed.begin();
        while(it != registed.end())
        {
            printf("client[1] : fd = %d, iMode = %d, file = %s. reg Code:", it->fd, it->iMode, it->file.c_str());
            list<int>::iterator msgCodeIt = it->lsMsgCode.begin();
            while(msgCodeIt!=it->lsMsgCode.end())
            {
                printf("%d ", *msgCodeIt);
                ++msgCodeIt;
            }

            ++it;
        }
    }
   
private:

    std::list<CLIINFO_T> registed;
};

int _tmain(int argc, _TCHAR* argv[])
{
    CClientsManager clients;

    CLIINFO_T cliifo(1,100,"socket1");

    cliifo.addMsgCode(1);
    cliifo.addMsgCode(2);
    cliifo.addMsgCode(3);
    cliifo.addMsgCode(4);
    cliifo.addMsgCode(5);

    clients.addClient(cliifo);

    clients.showClientInfo();

    Sleep(10);
 
    exit(0);
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值