2.3 KiB
2.3 KiB
Типы данных
Сия спецификация, помимо всего прочего, также определяет некоторые необходимые типы и структуры данных. В данном файле вы найдёте их описание и декларации.
ID
Класс, реализующий абстракцию над более конкретными типами идентификаторов. В этой спецификации указывается в качестве типа в тех случаях, когда применим любой из трёх типов.
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
Идентификатор локального для конкретного сервера объекта.
typedef uint64_t LocID;
FedID
Идентификатор объекта в пределах федерации.
typedef struct {
uint64_t Object;
uint64_t Server;
} FedID;
GlobID
Идентификатор объекта за пределами федерации.
typedef struct {
uint64_t Object;
std::string Server; // Доменное имя целевого сервера
} GlobID;
Power
Права доступа к какому-либо объекту. Представляет из себя набор следующих флагов:
0b00000000000000000000000000000001
: чтение0b00000000000000000000000000000010
: запись0b00000000000000000000000000000100
: удаление0b10000000000000000000000000000000
: изменение прав доступа0b01111111111111111111111111111000
: нераспределено
Нераспределённые флаги могут быть использованы в SPX.
typedef uint32_t Power;