/usr/share/doc/polyorb-doc/html/polyorb_ug/Marshalling-and-Unmarshalling-Operations.html is in polyorb-doc 2.11~20140418-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This is free software; you can redistribute it and/or modify it under
terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version. This software is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>PolyORB User’s Guide: Marshalling and Unmarshalling Operations</title>
<meta name="description" content="PolyORB User’s Guide: Marshalling and Unmarshalling Operations">
<meta name="keywords" content="PolyORB User’s Guide: Marshalling and Unmarshalling Operations">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="About-This-Guide.html#About-This-Guide" rel="start" title="About This Guide">
<link href="Index.html#Index" rel="index" title="Index">
<link href="About-This-Guide.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" rel="up" title="Partition Communication Subsystem">
<link href="Incorrect-Remote-Dispatching.html#Incorrect-Remote-Dispatching" rel="next" title="Incorrect Remote Dispatching">
<link href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" rel="prev" title="Partition Communication Subsystem">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Marshalling-and-Unmarshalling-Operations"></a>
<div class="header">
<p>
Next: <a href="Incorrect-Remote-Dispatching.html#Incorrect-Remote-Dispatching" accesskey="n" rel="next">Incorrect Remote Dispatching</a>, Previous: <a href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" accesskey="p" rel="prev">Partition Communication Subsystem</a>, Up: <a href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" accesskey="u" rel="up">Partition Communication Subsystem</a> [<a href="About-This-Guide.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Marshalling-and-Unmarshalling-Operations-1"></a>
<h4 class="subsection">8.2.1 Marshalling and Unmarshalling Operations</h4>
<p>The Partition Communication Subsystem (PCS) is the runtime library for
distributed features. It marshals and unmarshals client and server requests
into a data stream suitable for network transmission.
</p>
<p>Parameter streams are normally read and written using four attributes:
</p>
<ul>
<li> Write: write an element into a stream, valid only for constrained
types
</li><li> Read: read a constrained element from a stream
</li><li> Output: same as Write, but write discriminants or array bounds as well
if needed
</li><li> Input: same as Read, but read discriminants or bounds from
the stream (the Input attribute denotes a function)
</li></ul>
<p>An Ada compiler provides default ’Read and ’Write operations. But it is
up to the implementation of the PCS to provide default ’Read and ’Write
to ensure proper operation between heterogeneous architectures (see
<a href="Heterogeneous-System.html#Heterogeneous-System">Heterogeneous System</a>).
</p>
<p>The user can override these operations, except for predefined
types. Overriding with a custom version provides the user with a way
to debug its application (even outside of the Distributed Systems
Annex). On the other hand, remaining with the default implementation
allows the user to take advantage of optimized and portable representations
provided by the PCS.
</p>
<div class="smallexample">
<pre class="smallexample">
<b>with</b> Ada.Streams; <b>use</b> Ada.Streams;
<b>package</b> New_Integers <b>is</b>
<b>pragma</b> Pure;
<b>type</b> New_Integer <b>is</b> <b>new</b> Integer;
<b>procedure</b> Read
(S : <b>access</b> Root_Stream_Type'Class;
V : <b>out</b> New_Integer);
<b>procedure</b> Write
(S : <b>access</b> Root_Stream_Type'Class;
V : <b>in</b> New_Integer);
<b>for</b> New_Integer'Read <b>use</b> Read;
<b>for</b> New_Integer'Write <b>use</b> Write;
<b>end</b> New_Integers;
</pre></div>
<div class="smallexample">
<pre class="smallexample">
<b>package</b> <b>body</b> New_Integers <b>is</b>
<b>procedure</b> Read
(S : <b>access</b> Root_Stream_Type'Class;
V : <b>out</b> New_Integer)
<b>is</b>
B : String := String'Input (S);
<b>begin</b>
V := New_Integer'Value (B);
<b>end</b> Read;
<b>procedure</b> Write
(S : <b>access</b> Root_Stream_Type'Class;
V : <b>in</b> New_Integer)
<b>is</b>
<b>begin</b>
String'Output (S, New_Integer'Image (V));
<b>end</b> Write;
<b>end</b> New_Integers;
</pre></div>
<p>The language forces the user to provide Read and Write operations for
non-remote access types. Transmitting an access value by dumping its
content into a stream makes no sense when the value is going to be transmitted
to another partition (with a different memory space). To transmit non-remote
access types see <a href="Transmitting-Dynamic-Structure.html#Transmitting-Dynamic-Structure">Transmitting Dynamic Structure</a>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Incorrect-Remote-Dispatching.html#Incorrect-Remote-Dispatching" accesskey="n" rel="next">Incorrect Remote Dispatching</a>, Previous: <a href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" accesskey="p" rel="prev">Partition Communication Subsystem</a>, Up: <a href="Partition-Communication-Subsystem.html#Partition-Communication-Subsystem" accesskey="u" rel="up">Partition Communication Subsystem</a> [<a href="About-This-Guide.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|