stadium-proto/DATA TYPES.md

2.3 KiB
Raw Blame History

Типы данных

Сия спецификация, помимо всего прочего, также определяет некоторые необходимые типы и структуры данных. В данном файле вы найдёте их описание и декларации.

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;