SDK Google Play игр для C++

Краткое содержание

Организация

Основной точкой входа для функциональности игровых сервисов Play является класс GameServices. Экземпляры GameServices создаются с помощью GameServices::Builder. См. GameServices

Методы, которые получают доступ к состоянию всего сеанса GameServices или изменяют его, находятся в самом классе GameServices.

Другие функции управляются через набор менеджеров по функциям. Эти менеджеры группируют связанные функции вместе; они сами не содержат видимого пользователю состояния. Менеджеры возвращаются по ссылке, а время их существования контролируется содержащим их экземпляром GameServices. Таким образом, клиентский код никогда не должен хранить ссылку на менеджера, а вместо этого должен хранить экземпляр GameServices. См. Менеджеры .

Данные возвращаются через объекты неизменяемого типа значения. Эти значения отражают согласованное представление базовых данных на момент выполнения запроса. См. Типы значений .

Модель резьбы

Если не указано иное, все методы GameServices и методы Manager являются потокобезопасными и асинхронными. Их можно вызывать в любом потоке без внешней блокировки, и они будут выполняться в порядке, соответствующем порядку их вызова. В общем, методы-мутаторы (те, которые меняют состояние) используют модель «выпустил и забыл». Методы доступа (те, которые читают состояние) бывают двух основных вариантов. Первый вариант (с такими именами, как GetProperty) асинхронно передает результаты в предоставленный обратный вызов; второй вариант (с такими именами, как GetPropertyBlocking) синхронно возвращает результаты в вызывающий поток. Аксессоры видят результаты всех мутаторов, которые были вызваны ранее; однако мутатор может изменить или не изменить состояние удаленных игровых сервисов в любой момент времени.

Все пользовательские обратные вызовы (будь то однократные обратные вызовы, предоставляемые в качестве аргументов методам доступа, или обратные вызовы многократного использования, настроенные во время сборки GameServices) вызываются в выделенном потоке обратного вызова. Этот поток потенциально отличается от любой концепции платформы «основной поток» или «поток пользовательского интерфейса». Пользовательские обратные вызовы должны выполняться быстро, поскольку остановившийся поток обратных вызовов может вызвать проблемы, видимые пользователем (например, задержку завершения запроса на выход).

Свойства неизменяемых типов значений доступны синхронно и без блокировки.