//============================================================================
// 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;
}
网友评论