|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 13297 (0x33f1)
Types: TextFile
Names: »dynamic.tex«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.0/doc/cookbook/dynamic.tex«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/doc/cookbook/dynamic.tex«
% -*- LaTeX -*- (really SLiTeX)
\f
\begin{bwslide}
\part {DYNAMIC FACILITIES}\bf
\begin{nrtc}
\item RUN-TIME ENVIRONMENT
\item BOILERPLATE FOR INITIATORS
\item BOILERPLATE FOR RESPONDERS
\item DEFINING A NEW SERVICE
\end{nrtc}
\end{bwslide}
\f
\begin{note}\em
this part of the presentation corresponds to part~iv along with section~3.1
of The Applications Cookbook
\end{note}
\f
\begin{bwslide}
\ctitle {DYNAMIC FACILITIES\\ OVERVIEW}
\vskip.15in
\diagram[p]{figure10}
\end{bwslide}
\f
\begin{bwslide}
\part* {RUN-TIME ENVIRONMENT}\bf
\begin{nrtc}
\item RUN-TIME ENVIRONMENT RESPONSIBLE FOR ``CIVILIZING'' REMOTE OPERATIONS
SERVICE
\item IMPORTANT TRADE-OFF:
\begin{nrtc}
\item FLEXIBILITY FOR SIMPLICITY
\end{nrtc}
\item IN \emph{THE COOKBOOK}, \verb"ROSYLIB" IMPLEMENTS THE RUN-TIME
ENVIRONMENT
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {DATA STRUCTURES}
\begin{nrtc}
\item RECALL THAT ROSY GENERATES TABLES IN ADDITION TO STUBS
\item FOR EACH OPERATION, A TABLE IS DEFINED CONTAINING:
\begin{nrtc}
\item NAME AND NUMBER OF OPERATION
\item ARGUMENT ENCODE/DECODE ROUTINES
\item RESULT ENCODE/DECODE/FREE ROUTINES
\item ERROR TABLE
\end{nrtc}
\end{nrtc}\small
\begin{verbatim}
...
/* OPERATION m-ConfirmedEventReport */
"m-ConfirmedEventReport", operation_CMIP_m__ConfirmedEventReport,
encode_CMIP_m__ConfirmedEventReport_argument,
decode_CMIP_m__ConfirmedEventReport_argument,
1, encode_CMIP_m__ConfirmedEventReport_result,
decode_CMIP_m__ConfirmedEventReport_result,
free_CMIP_m__ConfirmedEventReport_result,
errors_CMIP_m__ConfirmedEventReport,
...
\end{verbatim}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {DATA STRUCTURES (cont.)}
\begin{nrtc}
\item FOR EACH ERROR, A TABLE IS DEFINED CONTAINING:
\begin{nrtc}
\item NAME AND NUMBER OF ERROR
\item PARAMETER ENCODE/DECODE/FREE ROUTINES
\end{nrtc}
\end{nrtc}\small
\begin{verbatim}
...
/* ERROR noSuchObject */
"noSuchObject", error_CMIP_noSuchObject,
encode_CMIP_noSuchObject_parameter,
decode_CMIP_noSuchObject_parameter,
free_CMIP_noSuchObject_parameter,
...
\end{verbatim}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {A TABLE-DRIVEN APPROACH}
\begin{nrtc}
\item RUN-TIME ENVIRONMENT SHOULD BE GENERALIZED TO WORK WITH THE LARGEST
POSSIBLE SET OF APPLICATIONS USING REMOTE OPERATIONS
\item A TABLE-DRIVEN APPROACH PERMITS US TO DECOUPLE OPERATION-SPECIFIC
INFORMATION
\begin{nrtc}
\item WHAT ARGUMENTS REPRESENTED, HOW THEY ARE ENCODED, etc.
\end{nrtc}
FROM OPERATION-GENERIC INFORMATION
\begin{nrtc}
\item THE OPERATION TAKES ARGUMENTS WHICH MUST BE ENCODED, etc.
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {STUBS REVISITED}
\begin{nrtc}
\item STUBS DEFINED BY ROSY CALL EITHER THE \verb"RyOperation" OR THE
\verb"RyStub" ROUTINE
\item THE \verb"RyOperation" ROUTINE IMPLEMENTS A ``POLICY''
\begin{nrtc}
\item OPERATION CLASS: SYNCHRONOUS
\item INVOCATION IDENTIFIER: UNIQUE NUMBER
\item LINKED-INVOCATION ID: NONE
\item PRIORITY: NONE
\end{nrtc}
\item THE \verb"RyStub" ROUTINE IMPLEMENTS A LESS RESTRICTIVE POLICY:
\begin{nrtc}
\item USER SELECTS OPERATION CLASS AND INVOCATION IDENTIFIER
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS STUBS}
\begin{nrtc}
\item RECALL
{\small
\begin{verbatim}
#define stub_CMIP_m__ConfirmedEventReport(sd,id,in,rfx,efx,class,roi) \
RyStub ((sd), table_CMIP_Operations, \
operation_CMIP_m__ConfirmedEventReport, (id), \
(caddr_t) (in), (rfx), (efx), (class), (roi))
\end{verbatim}}
\item THE MEANING OF THE PARAMETERS:
\begin{nrtc}
\item \verb"sd": ASSOCIATION-DESCRIPTOR
\item \verb"id": INVOCATION IDENTIFIER
\item \verb"in": ARGUMENT FOR OPERATION
\item \verb"rfx": DISPATCH ROUTINE FOR RESULT
\item \verb"efx": DISPATCH ROUTINE FOR ERRORS OR REJECTIONS
\item \verb"class": (A)SYNCHRONOUS
\item \verb"roi": LOCAL SERVICE INTERFACE INFORMATION
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {INSIDE RYSTUB}
\begin{nrtc}
\item RUDIMENTARY PARAMETER CHECK
\item BUILD PRESENTATION ELEMENT FOR ARGUMENT
\item BUILD \emph{ACTIVATION BLOCK}
\item ISSUE RO-INVOKE.REQUEST
\item IF ASYNCHRONOUS, RETURN
\item LOOP, WAITING FOR ANY RESPONSE:
\begin{nrtc}
\item RO-INVOKE.INDICATION:
\begin{nrtc}
\item PUSH ACTIVATION BLOCK FOR DISPATCHING OPERATION
\end{nrtc}
\item RO-RESULT, ERROR, OR REJECTION.INDICATION:
\begin{nrtc}
\item PARSE OPERATION RESULT OR ERROR PARAMETER AND CALL DISPATCH
ROUTINE
\begin{verbatim}
result = (*fnx) (sd, id, reason, value, roi);
\end{verbatim}
\item IF RESPONSE WAS FOR US, RETURN
\end{nrtc}
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {SYNCHRONOUS STUBS}
\begin{nrtc}
\item RECALL
\begin{verbatim}
#define op_CMIP_m__ConfirmedEventReport(sd,in,out,rsp,roi) \
RyOperation ((sd), table_CMIP_Operations, \
operation_CMIP_m__ConfirmedEventReport, \
(caddr_t) (in), (out), (rsp), (roi))
\end{verbatim}
\item THE MEANING OF THE PARAMETERS:
\begin{nrtc}
\item \verb"sd": ASSOCIATION-DESCRIPTOR
\item \verb"in": ARGUMENT FOR OPERATION
\item \verb"out": RESULT FOR OPERATION OR PARAMETER FOR ERROR
\item \verb"rsp": TELLS HOW TO INTERPRET \verb"out"
\item \verb"roi": REJECTION INFORMATION FOR OPERATION
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {INSIDE RYOPERATION}
\begin{nrtc}
\item RUDIMENTARY PARAMETER CHECK
\item BUILD PRESENTATION ELEMENT FOR ARGUMENT
\item BUILD \emph{ACTIVATION BLOCK}
\item ISSUE RO-INVOKE.REQUEST
\item LOOP, WAITING FOR SOME RESPONSE:
\begin{nrtc}
\item RO-INVOKE.INDICATION:
\begin{nrtc}
\item PUSH ACTIVATION BLOCK FOR DISPATCHING OPERATION
\end{nrtc}
\item RO-RESULT, ERROR, OR REJECTION.INDICATION:
\begin{nrtc}
\item IF FOR US: PARSE OPERATION RESULT OR ERROR PARAMETER AND RETURN
\item IF NOT FOR US: STUFF INFORMATION INTO CORRESPONDING ACTIVATION
BLOCK
\end{nrtc}
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {RESPONDERS}
\begin{nrtc}
\item REGISTER A DISPATCH ROUTINE FOR EACH OPERATION USING \verb"RyDispatch"
\begin{verbatim}
RyDispatch (sd, ryo, op, fnx, roi)
\end{verbatim}
\item THE MEANING OF THE PARAMETERS:
\begin{nrtc}
\item \verb"sd": ASSOCIATION-DESCRIPTOR
\item \verb"ryo": OPERATION TABLE
\item \verb"op": OPERATION NUMBER
\item \verb"fnx": DISPATCH ROUTINE
\item \verb"roi": FAILURE INDICATOR
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {OPERATION DISPATCH}
\begin{nrtc}
\item WHILE WAITING FOR ``SOMETHING TO HAPPEN'', A RO-INVOKE.INDICATION
CAUSES AN ACTIVATION BLOCK TO BE PUSHED
\item THE PRESENTATION ELEMENT FOR THE ARGUMENT IS PARSED INTO A STRUCTURE
AND THE DISPATCH ROUTINE IS CALLED:
\begin{verbatim}
result = (*fnx) (sd, ryo, rox, in, roi)
\end{verbatim}
\item DISPATCH ROUTINE HAS THREE OPTIONS
\begin{nrtc}
\item \verb"RyDsResult": TO RETURN A RESULT
\item \verb"RyDsError": TO RETURN AN ERROR
\item \verb"RyDsUReject": TO REJECT AN OPERATION
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {CLEAN-UP}
\begin{nrtc}
\item WHEN AN ASSOCIATION IS ABORTED (e.g., DUE TO NETWORK FAILURE),
SOMETHING MUST BE DONE WITH ACTIVATION BLOCKS
\item IDEALLY, WOULD LIKE TO:
\begin{nrtc}
\item RETAIN THIS STATE,
\item RE-ESTABLISH THE ASSOCIATION, AND
\item CONTINUE WHERE WE LEFT OFF
\end{nrtc}
\item NO SUCH LUCK, ACTIVATION BLOCKS ARE FLUSHED!
\begin{nrtc}
\item A LOT OF HARD ISSUES NEED TO BE RESOLVED IN ORDER TO DO THE
``RIGHT THING''
\item ACTUALLY, FOR ASYNCHRONOUS INVOCATIONS, A REJECTION IS
PASSED UP
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\part* {BOILERPLATE FOR INITIATORS}\bf
\begin{nrtc}
\item THE PROBLEM WITH BOILERPLATE IS THAT IT'S BORING
\item SO, WE'LL CONSIDER ONLY THE HIGHLIGHTS
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {INVOKING AN OPERATION}
\begin{nrtc}
\item ALTHOUGH \emph{THE COOKBOOK} TRIED TO MAKE THINGS SIMPLE,
CALLING A STUB IS NOT EASY
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS INVOCATION}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure21\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure32\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure22\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure31\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ASYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure33\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {SIMPLIFIED ASYNCHRONOUS INVOCATION}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure34\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {SYNCHRONOUS INVOCATION}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure15\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {SYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure16\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {SYNCHRONOUS INVOCATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure17\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\part* {BOILERPLATE FOR RESPONDERS}\bf
\begin{nrtc}
\item THE PROBLEM WITH BOILERPLATE IS THAT IT'S BORING
\item SO, WE'LL CONSIDER ONLY THE HIGHLIGHTS
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {RESPONDING TO AN OPERATION}
\begin{nrtc}
\item WHEN AN ACTIVATION BLOCK IS PUSHED,
THE DISPATCH ROUTINE IS CALLED
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {RESPONDING TO AN OPERATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure18\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {RESPONDING TO AN OPERATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure19\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {RESPONDING TO AN OPERATION (cont.)}\small
\hrule\vskip.15in
\begin{tgrind}
\let\linebox=\relax
\def\_{\ifstring{\char'137}\else\underline{\ }\fi}
\input figure20\relax
\end{tgrind}
\end{bwslide}
\f
\begin{bwslide}
\part* {DEFINING A NEW SERVICE}\bf
\begin{nrtc}
\item FINALLY, NEED TO IDENTIFY THE APPLICATION TO THE NETWORK
\item THINGS TO BE DEFINED:
\begin{nrtc}
\item ABSTRACT SYNTAX
\item APPLICATION CONTEXT NAME
\item APPLICATION ENTITY TITLE
\item PRESENTATION ADDRESS
\item LOCAL PROGRAM
\end{nrtc}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {ABSTRACT SYNTAX}
\begin{nrtc}
\item DESCRIBES THE DATA STRUCTURES BEING EXCHANGED BY THE SERVICE
\item DEFINED IN THE \verb"isobjects(5)" FILE:
\begin{verbatim}
"ips-osi-mips cmip pci" 1.0.9596.2.1.1
\end{verbatim}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {APPLICATION CONTEXT NAME}
\begin{nrtc}
\item DESCRIBES THE ELEMENTS AND PROTOCOL BEING USED BY THE SERVICE
\item DEFINED IN THE \verb"isobjects(5)" FILE:
\begin{verbatim}
"iso cmip" 1.0.9596.2.2.1
\end{verbatim}
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {NAMES AND ADDRESSES}
\begin{nrtc}
\item APPLICATION ENTITY TITLE UNIQUELY NAMES AN ENTITY IN THE NETWORK
\item PRESENTATION ADDRESS LOCATES AN ENTITY IN THE NETWORK
\item DEFINED IN THE \verb"isoentities(5)" FILE:
\begin{verbatim}
gonzo-noc mgmtinfobase 1.17.4.1.9 "" "" #519
NS 49000002608c456561fe04
X.25 23422233939909
\end{verbatim}
\item USED BY INITIATORS AND STATIC RESPONDERS (MULTIPLE ASSOCIATION)
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {LOCAL PROGRAM}
\begin{nrtc}
\item IDENTIFIES THE PROGRAM ON THE LOCAL SYSTEM WHICH IMPLEMENTS THE SERVICE
\item DEFINED IN THE \verb"isoservices(5)" FILE:
\begin{verbatim}
"tsap/cmip" #519 /usr/etc/ros.cmip args...
\end{verbatim}
\item USED BY LISTENER TO FIND DYNAMIC RESPONDERS (SINGLE ASSOCIATION)
\end{nrtc}
\end{bwslide}
\f
\begin{bwslide}
\ctitle {DYNAMIC FACILITIES:\\ REVIEW}
\vskip.15in
\diagram[p]{figure10}
\end{bwslide}