|
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 a
Length: 15540 (0x3cb4) Types: TextFile Names: »a-build-3.tex«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/doc/practical/a-build-3.tex«
% -*- LaTeX -*- (really SLiTeX) \f \begin{bwslide} \ctitle {DYNAMIC FACILITIES}\bf \begin{nrtc} \item RUN-TIME ENVIRONMENT \item INITIATORS TEMPLATE \item RESPONDERS TEMPLATE \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]{figureA-49} \end{bwslide} \f \begin{bwslide} \ctitle {RUN-TIME ENVIRONMENT} \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 STUB GENERATOR PRODUCES OPERATION TABLES AS WELL \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 GENERALLY YOUR STUB ROUTINES WILL USE ``POLICY'' ROUTINES, MAINTAING: \begin{nrtc} \item INVOCATION IDENTIFIERS \item LINKED--INVOCATION IDs \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, \item THE PRESENTATION ELEMENT FOR THE OPERATIONS 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 TO RETURN A RESULT \item TO RETURN AN ERROR \item 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} \ctitle {INSIDE AN INITIATOR}\bf \begin{nrtc} \item ALMOST OF THIS IS ``BOILERPLATE'' \item WE'LL CONSIDER ONLY THE HIGHLIGHT: INVOKING AN OPERATION \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 figureA-54\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 figureA-55\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 figureA-56\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 figureA-57\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 figureA-58\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 figureA-59\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 figureA-60\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 figureA-61\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 figureA-62\relax \end{tgrind} \end{bwslide} \f \begin{bwslide} \ctitle {INSIDE A RESPONDER}\bf \begin{nrtc} \item AGAIN, A LOT OF THIS WILL BE ``BOILERPLATE'' \item WE WILL ONLY LOOK AT RESPONDING TO AN OPERATION INVOKATION \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 figureA-63\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 figureA-64\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 figureA-65\relax \end{tgrind} \end{bwslide} \f \begin{bwslide} \ctitle {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 \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 \begin{verbatim} "iso cmip" 1.0.9596.2.2.1 \end{verbatim} \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {APPLICATION ENTITY TITLE} \begin{nrtc} \item UNIQUELY NAMES AN ENTITY IN THE NETWORK \item VALUE IS A DISTINGUISHED NAME, e.g., \begin{quote}\small\begin{verbatim} c=US@o=TWG@ou=Software Engineering@cn=boomer@cn=filestore \end{verbatim}\end{quote} (THIS IS A STRING REPRESENTATION OF A COMPLEX ASN.1 TYPE!) \item SIMPLER APPROACH IS TO USE LOCAL ALIASING (``boomer-filestore'') PRIOR TO RESOLUTION: \begin{nrtc} \item LHS (QUALIFIER) MAPS TO INITIAL PART OF DISTINGUISHED NAME \item RHS (DESIGNATOR) MAPS TO SUFFIX \end{nrtc} \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {APPLICATION ENTITY TITLE} \begin{nrtc} \item FOR INITIATORS, THE DIRECTORY IS ASKED TO RETURN THE ``PRESENTATION ADDRESS'' ATTRIBUTE OF THIS OBJECT \item CONCEPTUALLY, RESPONDERS STORE THIS INFORMATION IN THE DIRECTORY \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {DYNAMIC CHARACTERISTICS: \\ PRESENTATION ADDRESS} \begin{nrtc} \item UNIQUELY IDENTIFIES THE LOCATION OF AN ENTITY \item VALUE IS \begin{nrtc} \item PRESENTATION SELECTOR (0+ OCTETS) \item SESSION SELECTOR (0+ OCTETS) \item TRANSPORT SELECTOR (0+ OCTETS) \item NETWORK ADDRESSES (AT LEAST 1) \end{nrtc} \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {LOCAL ENVIRONMENT: \\ CURRENT METHOD} \begin{nrtc} \item TRANSPORT LISTENER RESIDES ON EACH END-SYSTEM \item FOR EACH SERVICE LISTED IN LOCAL DATABASE \begin{nrtc} \item LISTEN ON ASSOCIATED TRANSPORT ADDRESS \item UPON RECEIVING AN INCOMING CONNECTION, TSAPD INVOKES ASSOCIATED PROGRAM \end{nrtc} \item PROGRAM IS CALLED A DYNAMIC RESPONDER \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {LOCAL ENVIRONMENT: \\ CURRENT METHOD (cont.)} \begin{nrtc} \item SOME RESPONDERS MAY WISH TO SERVICE MULTIPLE INITIATORS \item DIFFERENT APPROACH: \begin{nrtc} \item SERVICE NOT LISTED IN LOCAL DATABASE \item PROGRAM LISTENS ON OWN TRANSPORT ADDRESS \end{nrtc} \item PROGRAM IS CALLED A STATIC RESPONDER \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {LOCAL ENVIRONMENT: \\ FUTURE METHOD} \begin{nrtc} \item LOCAL DATABASE CONTAINS \begin{nrtc} \item SERVICE NAME \item LOCAL PROGRAM \end{nrtc} \begin{verbatim} "tsap/cmip" #519 /usr/etc/ros.cmip args... \end{verbatim} BUT NOT TRANSPORT ADDRESS \item FOR EACH SERVICE \begin{nrtc} \item TRANSPORT LISTENER LISTENS ON RANDOM TRANSPORT ADDRESS \item LISTENER REGISTERS SERVICE \& TRANSPORT ADDRESS WITH THE DIRECTORY \end{nrtc} \item SIMILAR APPROACH IS USED BY STATIC RESPONDERS \end{nrtc} \end{bwslide} \f \begin{bwslide} \ctitle {DYNAMIC FACILITIES:\\ REVIEW} \vskip.15in \diagram[p]{figureA-49} \end{bwslide} \f \begin{bwslide} \ctitle {CLOSING COMMENTS\\UPPER--LAYER ADDRESSING} \begin{nrtc} \item TOO MUCH FREEDOM \item DYNAMIC RESPONDER PREFER TO ``DISPATCH'' ON TRANSPORT SELECTOR \item STATIC RESPONDERS MAY REQUIRE A UNIQUE NETWORK ADDRESS \end{nrtc} \end{bwslide} \begin{bwslide} \ctitle {UPPER--LAYER ADDRESSING} \begin{nrtc} \item U.S. GOSIP CALLS FOR DISPATCHING ON PRESENTATION SELECTOR \item OKAY FOR DYNAMIC RESPONDERS \item STATIC RESPONDERS MAY STILL REQUIRE A UNIQUE NETWORK ADDRESS \begin{nrtc} \item WITH REAL OSI NETWORK SERVICE, STATIC RESPONDERS CAN DISPATCH ON TRANSPORT SELECTOR \end{nrtc} \end{nrtc} \end{bwslide}