82 lines
2.3 KiB
Markdown
82 lines
2.3 KiB
Markdown
# Типы данных
|
||
|
||
Сия спецификация, помимо всего прочего, также определяет некоторые необходимые типы и структуры данных. В данном файле вы найдёте их описание и декларации.
|
||
|
||
|
||
|
||
#### 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;
|
||
``` |