2020-05-25

2020-05-24  本文已影响0人  Vwwwwww
//============================================================================
// Name        : EzSimulator.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C, Ansi-style
//============================================================================

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include <cstdint>
#include <iostream>
#include <vector>
#include <unistd.h>

struct Msg {
    std::string name;
    int id;
    int time;
};

void printfcolum(std::vector<uint8_t> keys, std::map<uint16_t, Msg> msgs) {

    printf("keys size:%lu    msgs size:%lu  \n", keys.size(), msgs.size());
    for (uint8_t i = 0; i < keys.size(); i++) {
        printf("vector:%d \n", keys[i]);
    }

    for (std::map<uint16_t, Msg>::iterator ite = msgs.begin(); ite
            != msgs.end(); ite++) {
        uint16_t dd = ite->first;
        std::string name = ite->second.name;
        printf("key:%d name:%s \n", dd, name.c_str());
    }
}

void testVector() {

    std::vector<uint8_t> keys;
    std::map<uint16_t, Msg> msgs;

    Msg msg;
    msg.id = 1;
    msg.name = "nihao";

    keys.push_back(10);
    msgs.insert(std::make_pair(10, msg));

    keys.push_back(2);
    msg.name = "nihao1";
    msgs.insert(std::make_pair(2, msg));

    keys.push_back(3);
    msg.name = "nihao2";
    msgs.insert(std::make_pair(3, msg));

    printfcolum(keys, msgs);

    printf("###############  start ##############   \n");
    uint8_t key;
    Msg data;
    if (keys.size() > 0) {
        key = keys[0];
        data = msgs.at(key);
        printf("get key:%d name:%s \n", key, data.name.c_str());
    }

    // delete
    if (keys.size() > 0) {
        if (keys.front() == key) {
            printf("delete begin:%d key:%d \n", keys.front(), key);
            keys.erase(keys.begin());
            if (msgs.count(key)) {
                msgs.erase(key);
            }
        }
    }

    printfcolum(keys, msgs);

}

void sendmsg(Msg msg) {
    printf(" sendmsg: %s \n", msg.name.c_str());
}

int secend_pre;
void sleep_query(int secend, Msg msg) {
    printf(" secend:%d   secend_pre:%d\n", secend, secend_pre);
    int sleep_time = secend - secend_pre;
    if (sleep_time > 0) {
        time_t start;
        time(&start);
        printf(" ---    waitting  %ld  --start- sleep_time:%d \n", start,
                sleep_time);
        sleep(sleep_time);
        time_t end;
        time(&end);
        printf(" ---    waitting  %ld --end-  \n", end);
        printf(" ---    time  %ld ---  \n", (end - start));
        sendmsg(msg);

    } else {
        sendmsg(msg);
    }
    secend_pre = secend;
}

void testSendMsg() {
    std::vector<Msg> msgs;
    for (int i = 0; i < 10; i++) {
        Msg msg;
        msg.name = "msg " + std::to_string(i);
        msg.time = 2 + i;
        msgs.push_back(msg);
    }

    for (uint8_t i = 0; i < msgs.size(); i++) {
        sleep_query(msgs[i].time, msgs[i]);
    }
}

int main(void) {
    puts("Hello World!!!");

    return EXIT_SUCCESS;
}
上一篇 下一篇

猜你喜欢

热点阅读