]> git.stg.codes - stg.git/blob - include/stg/message.h
Public interfaces: part 1
[stg.git] / include / stg / message.h
1 /*
2  *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
3  */
4
5 #pragma once
6
7 #include <string>
8 #include <ctime>
9 #include <cstdint>
10
11 namespace STG
12 {
13
14 struct Message
15 {
16     struct Header
17     {
18         Header() noexcept
19             : id(0),
20               ver(0),
21               type(0),
22               lastSendTime(0),
23               creationTime(0),
24               showTime(0),
25               repeat(0),
26               repeatPeriod(0)
27         {}
28
29         Header(const Header&) = default;
30         Header& operator=(const Header&) = default;
31         Header(Header&&) = default;
32         Header& operator=(Header&&) = default;
33
34         uint64_t    id;
35         unsigned    ver;
36         unsigned    type;
37         unsigned    lastSendTime;
38         unsigned    creationTime;
39         unsigned    showTime;
40         int         repeat;
41         unsigned    repeatPeriod;
42     };
43
44     Message() = default;
45
46     Message(const Message&) = default;
47     Message& operator=(const Message&) = default;
48     Message(Message&&) = default;
49     Message& operator=(Message&&) = default;
50
51     time_t GetNextSendTime() const
52     {
53         return header.lastSendTime + header.repeat * 60;
54     }
55
56     Header header;
57     std::string text;
58 };
59
60 }