OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [CORBA/] [GeneralHolder.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* universalStreamable.java --
2
   Copyright (C) 2005 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package gnu.CORBA;
40
 
41
import gnu.CORBA.CDR.BufferredCdrInput;
42
import gnu.CORBA.CDR.BufferedCdrOutput;
43
 
44
import org.omg.CORBA.BAD_OPERATION;
45
import org.omg.CORBA.MARSHAL;
46
import org.omg.CORBA.TypeCode;
47
import org.omg.CORBA.portable.InputStream;
48
import org.omg.CORBA.portable.OutputStream;
49
import org.omg.CORBA.portable.Streamable;
50
 
51
import java.io.IOException;
52
 
53
/**
54
 * This class holds the abstract binary data array of the Streamable
55
 * being stored. It is used to insert and extract into {@link Any} objects
56
 * that have no holder, but have the helper classes.
57
 * Encoding/decoding then must be performed by the helper. This class is
58
 * defined as package private because it is not idiot proof and
59
 * must be used with care.
60
 *
61
 * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
62
 */
63
public class GeneralHolder
64
  implements Streamable
65
{
66
  /**
67
   * The binary data, stored inside this holder.
68
   */
69
  private BufferedCdrOutput value = new BufferedCdrOutput();
70
 
71
  /**
72
   * Create the universal holder that uses the given buffer to store the data.
73
   */
74
  public GeneralHolder(BufferedCdrOutput buffer)
75
  {
76
    value = buffer;
77
  }
78
 
79
  /**
80
   * Reads into the internal buffer till the end of stream is
81
   * reached. No alignment operations are performed. This operation
82
   * normally reads from the stream, where the single value,
83
   * stored using {@link #_write}, is written.
84
   *
85
   * @throws MARSHALL, if the IOException is thrown during the
86
   * stream operation.
87
   */
88
  public void _read(InputStream input)
89
  {
90
    try
91
      {
92
        if (input instanceof BufferredCdrInput)
93
          {
94
            BufferredCdrInput b = (BufferredCdrInput) input;
95
            value.write(b.buffer.getBuffer());
96
          }
97
        else
98
          {
99
            int c;
100
 
101
            do
102
              {
103
                c = input.read();
104
                if (c >= 0)
105
                  value.write(c);
106
              }
107
            while (c >= 0);
108
          }
109
      }
110
    catch (IOException ex)
111
      {
112
        MARSHAL t = new MARSHAL();
113
        t.minor = Minor.Any;
114
        t.initCause(ex);
115
        throw t;
116
      }
117
  }
118
 
119
  /**
120
   * The type is not known and cannot be returned.
121
   *
122
   * @throws BAD_OPERATION, always.
123
   */
124
  public TypeCode _type()
125
  {
126
    BAD_OPERATION bad = new BAD_OPERATION();
127
    bad.minor = Minor.Inappropriate;
128
    throw bad;
129
  }
130
 
131
  /**
132
   * Writes the binary data being stored into the given output
133
   * stream. This operation supposes that the current stream
134
   * position is 0 or satisfies the required alignments anyway.
135
   *
136
   * @throws MARSHAL if the IOExeption is thrown when writing the
137
   * byte array.
138
   */
139
  public void _write(OutputStream output)
140
  {
141
    try
142
      {
143
        value.buffer.writeTo(output);
144
      }
145
    catch (IOException ex)
146
      {
147
        MARSHAL t = new MARSHAL();
148
        t.minor = Minor.Any;
149
        t.initCause(ex);
150
        throw t;
151
      }
152
  }
153
 
154
  /**
155
   * Get the input stream that reads the fields of the stored value.
156
   */
157
  InputStream getInputStream()
158
  {
159
    return value.create_input_stream();
160
  }
161
 
162
  /**
163
   * Clone.
164
   */
165
  public GeneralHolder Clone()
166
  {
167
    try
168
      {
169
        BufferedCdrOutput nb = new BufferedCdrOutput(value.buffer.size());
170
        value.buffer.writeTo(nb);
171
        return new GeneralHolder(nb);
172
      }
173
    catch (IOException ex)
174
      {
175
        throw new Unexpected(ex);
176
      }
177
  }
178
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.