Cache': перехват текущего устройства
Cache': перехват текущего устройства
Евгений Каратаев
Эта
заметка описывает программный перехват ввода-вывода текущего устройства в
Cache'. Неудобство стандартных устройств mumps, а точнее определенного их
поведения состоит в том, что если выполняется программный код, осуществляющий
ввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе как
установкой возможных опций устройству. В то время как в некоторых случаях очень
нужно иметь возможность выполнить так называемый унаследованный (legacy) код,
который оперирует текущим устройством, но при этом в самих операциях
ввода-вывода произвести дополнительные действия.
Ситуация
примерно аналогична вводу-выводу в сишном стиле и в стиле C++, когда в первом
случае мы можем открыть файл и передать его коду, а во втором случае мы можем
создать объект ввода-вывода и переопределить для него операции чтения - записи.
Для
перехвата операций ввода-вывода текущего устройства нужно
Сделать
отдельную рутину, в которой прописать функции, вызываемые при операциях
ввода-вывода.
Указать
текущему устройству эту рутину как мнемоническую в команде use
Включить
перенаправление для текущего устройства
В
функциях переопределяющих операции ввода-вывода можно использовать штатное
поведение текущего устройства если отключить перенаправление и при выходе из
обработчика снова его включить.
Рутина-перехватчик
должна реализовать на свое усмотрение метки
rstr(len,to)
Похожие работы на - Cache': перехват текущего устройства
|