stadium-proto/DATA TYPES.md

82 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Типы данных
Сия спецификация, помимо всего прочего, также определяет некоторые необходимые типы и структуры данных. В данном файле вы найдёте их описание и декларации.
#### ID
Класс, реализующий абстракцию над более конкретными типами идентификаторов. В этой спецификации указывается в качестве типа в тех случаях, когда применим любой из трёх типов.
```C++
class ID {
private:
uint64_t object_id, server_id;
std::string server_domain;
public:
ID (uint64_t oid, uint64_t sid, std::string sd) {
this->object_id = oid;
this->server_id = sid;
this->server_domain = sd;
}
LocID GetValue () { return this->object_id; }
FedID GetValue () {
FedID fid;
fid.Object = this->object_id;
fid.Server = this->server_id;
return fid;
}
GlobID GetValue () {
GlobID gid;
gid.Object = this->object_id;
gid.Server = this->server_domain;
return gid;
}
}
```
#### LocID
Идентификатор локального для конкретного сервера объекта.
```C++
typedef uint64_t LocID;
```
#### FedID
Идентификатор объекта в пределах федерации.
```C++
typedef struct {
uint64_t Object;
uint64_t Server;
} FedID;
```
#### GlobID
Идентификатор объекта за пределами федерации.
```C++
typedef struct {
uint64_t Object;
std::string Server; // Доменное имя целевого сервера
} GlobID;
```
#### Power
Права доступа к какому-либо объекту. Представляет из себя набор следующих флагов:
- `0b00000000000000000000000000000001`: чтение
- `0b00000000000000000000000000000010`: запись
- `0b00000000000000000000000000000100`: удаление
- `0b10000000000000000000000000000000`: изменение прав доступа
- `0b01111111111111111111111111111000`: нераспределено
Нераспределённые флаги могут быть использованы в SPX.
```C++
typedef uint32_t Power;
```