D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Общие сведения / entity

entity

Объект системы

Обозначает элемент системы, например, процесс D3, последовательный порт, устройство, с которым возможен обмен данными.

Данный раздел описывает фундаментальные понятия, необходимые для понимания принципов работы с данными в среде D3.

Entity ID

Любой элемент в системе имеет уникальный 32 битный идентификатор. Некоторые идентификаторы создаются системой и могут быть изменены с течением времени, например TCP/IP соединение принимает новый идентификатор каждый раз при создании. Некоторые есть константы, например, идентификатор процесса D3. На пользовательском уровне идентификаторы кодируются как один символ и следующий за ним пустой символ (null) или положительное число:

P - D3 процесс, или PIB
S - последовательное устройство
T - телнет-сессия, эмуляция терминала
E - TCP/IP соединение
U - UDP/IP соединение
Q - очередь сообщений
P11 - процесс D3 номер 11, S24 - последовательное устройство номер 24, E1657 - TCP/IP соединение номер 1657. Все это примеры идентификаторов элементов системы. Если идентифицируется процесс D3, литера P может быть опущена. Например, 11 - также идентификатор процесса D3 номер 11.
Стандартный ввод/вывод

Любые элементы системы могут обмениваться данными. Элемент может передавать данные только одному другому элементу.

Например, порт D3, или PIB, представляет собой элемент системы: его входными данными может быть команда TCL или данные оператора INPUT программы FlashBASIC, а на выходе может быть результат выполнения TCL команды или оператора PRINT программы FlashBASIC. Процесс D3 может получать данные от двух различных терминалов, как в режиме тандема, а отправлять только на один терминал. Последовательный порт также является элементом системы, хотя в данном случае понятия "ввод" и "вывод" менее интуитивны: его ввод - это данные, которые должны быть переданы последовательному устройству, а вывод - данные, получаемые от устройства.

Данные могут быть также переданы через другой элемент (см. далее).

Forwarding Входные данные могут быть в ряде случаев перенаправлены другому элементу. Этот механизм может быть представлен как дублирование входящих данных. Например, в режиме тандема входящие данные последовательного порта, связанного с терминалом, перенаправляются на терминал, инициировавший тандем, в результате чего вывод процесса D3 отображается на обоих терминалах.
Output Link Исходящая ссылка - прием, с помощью которого элемент системы направляет свой вывод другому элементу. Каждый элемент может иметь только одну исходящую ссылку, в тоже время каждый элемент может быть объектом, целью, любого числа исходящих ссылок. Если элемент не имеет исходящую ссылку, его поток данных останавливается в ожидании ее создания. Например, процесс D3 может быть приостановлен. В случае с последовательным устройством, командой XOFF можно остановить входящий поток данных после заполнения внутренних буферов.
Forwarding Link Перенаправляющая ссылка - прием, с помощью которого элемент системы перенаправляет (дублирует) свои входные данные на другой элемент. Каждый элемент может иметь только одну перенаправляющую ссылку, в тоже время каждый элемент может быть объектом, целью, любого числа перенаправляющих ссылок.
Association Ассоциации Это комбинации элементов вместе с различными ссылками, которые регулируют потоки данных между ними, рассматриваемые как единое целое. Например, в тандеме процесс D3 и два взаимодействующие с ним терминала составляют ассоциацию.
Специальные элементы

Система автоматически создает следующие специальные элементы:

BB - Byte Bucket. Все данные, перенаправленные на этот элемент, пропадают. Например, исходящая ссылка фантомного процесса D3 указывает на этот элемент. Идентификатор этого элемента -1.
CC - консоль. Каждый элемент системы может стать консолью. По умолчанию, данные, направляемые на этот элемент, пишутся в лог-файл (в среде Unix), или теряются (в других средах). Идентификатор консоли -2.
NULL - пустой элемент. Этот элемент не принимает никакие данные. Если какой-либо элемент посылает данные на этот элемент, происходит "зависание". Его идентификатор 0.
Подключение

Элемент может подключиться к другому элементу для получения исключительного права его использования. Для успешного подключения элемента он не должен быть уже подключен, он не должен иметь исходящую ссылку, и никакой другой элемент не должен иметь исходящих или перенаправляющих ссылок на него. При этом он может иметь перенаправляющую ссылку на другой элемент. После подключения другого элемента, текущий элемент может обмениваться с ним данными, независимо от нормального потока данных, проходящего по ссылкам. Например, если элемент A имеет исходящую ссылку на элемент B, и подключает элемент C, элемент A может направлять данные на свой стандартный вывод элементу B, а также на элемент C, используя подключение. На уровне приложения, обмен данными с подключенным устройством может производиться с использованием операторов FlashBASIC GET и SEND.

Замечание: после подключения элемента для него можно создавать исходящие и входящие ссылки.

Ввод-вывод с подключенным устройством не может быть пропущен через механизм трансляции (см. set-imap, set-iomap), и данные, направляемые на него, не могут быть перенаправлены на другой элемент.

Классы элементов

Система различает следующие классы элементов:

Cloning - клонирующийся элемент - это элемент, который делает копию себя самого, когда другой элемент пытается создать на него ссылку или подключить его. Например, в некоторой виртуальной машине существует одно TCP/IP соединение, имеющее идентификатор E0. Когда D3 процесс подключается к этому элементу E0, последний создает свою копию с идентификатором, скажем E1657. С этим клоном и происходит обмен данными. При отключении D3 процесса, клон уничтожается.
Cloned - клонированный элемент - копия клонирующегося элемента. Продолжительность существования клона ограничена. Он обычно уничтожается при отключении от него.
Special - специальный элемент - это либо NULL, либо Byte Bucket, либо Console.
Normal - любой другой элемент, не относящийся к вышеперечисленным. Процесс D3, последовательный порт являются нормальными элементами системы.