Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

E.2.3 Библиотечные модули интерфейса удалённых вызовов

Библиотечный модуль интерфейса удалённых вызовов может использоваться как интерфейс для удалённых вызовов процедур (RPC) (или удалённых вызовов функций) между активными разделами.
Абзацы с 2-го по 6-й были перемещены в Приложение J, «Устаревшие функции».

Правила легальности

Когда аспект библиотечного модуля (см. 13.1.1) Remote_Call_Interface библиотечного модуля равен True, библиотечный модуль является интерфейсом удалённого вызова (RCI). Подпрограмма, объявленная в видимой части такого библиотечного модуля или объявленная таким библиотечным модулем, называется удалённой подпрограммой.
Объявление библиотечного модуля RCI должно быть предварительно обрабатываемым (см. 10.2.1) и должно зависеть семантически только от объявленных чистых элементов_библиотеки, общих пассивных библиотечных модулей, библиотечных модулей удалённых типов, других библиотечных модулей интерфейса удалённых вызовов или предварительно обработанных обычных библиотечных модулей, которые упоминаются только в частях с ключевым словом with.
Кроме того, на библиотечный модуль RCI накладываются следующие ограничения:
  • его видимая часть не должна содержать объявление переменной;
  • его видимая часть не должна содержать объявление ограниченного типа;
  • его видимая часть не должна содержать вложенное объявление_обобщенного_модуля;
  • он не должен содержать, и его видимая часть не должна содержать, объявление подпрограммы, для которой аспект Inline равен True;
  • он не должен содержать, и его видимая часть не должна содержать, объявление подпрограммы, которая не является блокирующей (см. 9.5);
  • он не должен содержать, и его видимая часть не должна содержать, объявление подпрограммы (или доступа к подпрограмме), профиль которой содержит параметр или результат типа, который не поддерживает внешнюю потоковую передачу (см. 13.13.2);
  • любой публичный дочерний элемент библиотечного модуля должен быть библиотечным модулем интерфейса удалённых вызовов.
Указание потокового атрибута является незаконным в спецификации библиотечного модуля интерфейса удалённых вызовов. В дополнение к местам, где обычно применяются правила легальности (см. 12.3), данное правило применяется также в частях с ключевым словом private экземпляра обобщенного модуля.
All_Calls_Remote — это аспект библиотечного модуля. Если аспект All_Calls_Remote библиотечного модуля равен True, то библиотечный модуль должен быть интерфейсом удалённого вызова.

Правила после компиляции

Библиотечный модуль интерфейса удалённых вызовов должен быть назначен не более чем одному разделу данного программы. Библиотечный модуль интерфейса удалённых вызовов, у которого родитель также является библиотечным модулем RCI, должен быть назначен только тому же разделу, что и его родитель.
Несмотря на правило, приведенное в 10.2, модуль компиляции в данном разделе, который семантически зависит от объявления библиотечного модуля RCI, требует (в смысле 10.2) только объявление библиотечного модуля RCI, а не тела, для включения в этот же раздел. Поэтому тело библиотечного модуля RCI включается только в раздел, которому библиотечный модуль RCI явно назначен.

Требования к реализации

Если аспект All_Calls_Remote равен True для данного библиотечного модуля RCI, то реализация должна перенаправить любой из следующих вызовов через Подсистему межраздельной связи (PCS); см. E.5:
  • Прямой вызов подпрограммы модуля RCI извне области объявления модуля;
  • Непрямой вызов через значение удалённого доступа к подпрограмме, которое обозначает подпрограмму модуля RCI;
  • Вызов диспетчеризации с управляемым операндом, обозначенным удалённым значением доступа к общеклассовому значению, метка которого идентифицирует тип, объявленный в модуле RCI.

Разрешения реализации

Реализация может опустить поддержку аспекта Remote_Call_Interface или аспекта All_Calls_Remote. В качестве альтернативы вызовам RPC может быть поддерживаемая явная обмен сообщениями между активными разделами.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API