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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [gnu/] [java/] [net/] [local/] [LocalSocketImpl.java] - Blame information for rev 756

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 756 jeremybenn
/* LocalSocketImpl.java -- a unix domain client socket implementation.
2
   Copyright (C) 2006  Free Software Foundation, Inc.
3
 
4
This file is a 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 of the License, or (at
9
your option) 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; if not, write to the Free Software
18
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
19
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.java.net.local;
40
 
41
import java.io.FileDescriptor;
42
import java.io.InputStream;
43
import java.io.IOException;
44
import java.io.OutputStream;
45
 
46
import java.net.InetAddress;
47
import java.net.SocketAddress;
48
import java.net.SocketException;
49
import java.net.SocketImpl;
50
 
51
final class LocalSocketImpl extends SocketImpl
52
{
53
 
54
  // Fields.
55
  // -------------------------------------------------------------------------
56
 
57
  private boolean created;
58
  private InputStream in;
59
  private OutputStream out;
60
  private int socket_fd;
61
  private LocalSocketAddress local;
62
  private LocalSocketAddress remote;
63
 
64
  // Constructor.
65
  // -------------------------------------------------------------------------
66
 
67
  LocalSocketImpl ()
68
  {
69
    this (false);
70
  }
71
 
72
  LocalSocketImpl (boolean nocreate)
73
  {
74
    created = nocreate;
75
    socket_fd = -1;
76
    fd = new FileDescriptor ();
77
  }
78
 
79
  // Instance methods.
80
  // -------------------------------------------------------------------------
81
 
82
  public void setOption (int opt, Object value) throws SocketException
83
  {
84
    throw new SocketException ("local sockets do not support options");
85
  }
86
 
87
  public Object getOption (int opt) throws SocketException
88
  {
89
    throw new SocketException ("local sockets do not support options");
90
  }
91
 
92
  protected void create (boolean stream) throws IOException { }
93
  protected void listen (int timeout) throws IOException { }
94
  protected void accept (LocalSocketImpl socket) throws IOException { }
95
  protected int available () throws IOException { return -1; }
96
  protected void close () throws IOException { }
97
  protected void sendUrgentData (int data) throws IOException { }
98
  protected void shutdownInput () throws IOException { }
99
  protected void shutdownOutput () throws IOException { }
100
 
101
  void unlink () throws IOException { }
102
  void localBind (LocalSocketAddress addr) throws IOException { }
103
  void localConnect (LocalSocketAddress addr) throws IOException { }
104
  int read (byte[] buf, int off, int len) throws IOException { return -1; }
105
  void write (byte[] buf, int off, int len) throws IOException { }
106
 
107
  void doCreate () throws IOException
108
  {
109
    if (!created)
110
      {
111
        create (true);
112
      }
113
  }
114
 
115
  LocalSocketAddress getLocalAddress ()
116
  {
117
    return local;
118
  }
119
 
120
  LocalSocketAddress getRemoteAddress ()
121
  {
122
    return remote;
123
  }
124
 
125
  protected InputStream getInputStream()
126
  {
127
    if (in == null)
128
      {
129
        in = new LocalInputStream (this);
130
      }
131
 
132
    return in;
133
  }
134
 
135
  protected OutputStream getOutputStream()
136
  {
137
    if (out == null)
138
      {
139
        out = new LocalOutputStream (this);
140
      }
141
 
142
    return out;
143
  }
144
 
145
  protected void accept (SocketImpl impl) throws IOException
146
  {
147
    if (! (impl instanceof LocalSocketImpl))
148
      {
149
        throw new IllegalArgumentException ("not a local socket");
150
      }
151
    accept ((LocalSocketImpl) impl);
152
  }
153
 
154
  protected void connect (String host, int port) throws IOException
155
  {
156
    throw new SocketException ("this is a local socket");
157
  }
158
 
159
  protected void connect (InetAddress addr, int port) throws IOException
160
  {
161
    throw new SocketException ("this is a local socket");
162
  }
163
 
164
  protected void connect(SocketAddress addr, int timeout) throws IOException
165
  {
166
    if (! (addr instanceof LocalSocketAddress))
167
      {
168
        throw new SocketException ("address is not local");
169
      }
170
    localConnect ((LocalSocketAddress) addr);
171
  }
172
 
173
  protected void bind (InetAddress addr, int port) throws IOException
174
  {
175
    throw new SocketException ("this is a local socket");
176
  }
177
 
178
  protected void bind (SocketAddress addr) throws IOException
179
  {
180
    if (! (addr instanceof LocalSocketAddress))
181
      {
182
        throw new SocketException ("address is not local");
183
      }
184
    localBind ((LocalSocketAddress) addr);
185
  }
186
 
187
// Inner classes.
188
  // -------------------------------------------------------------------------
189
 
190
  class LocalInputStream extends InputStream
191
  {
192
 
193
    // Field.
194
    // -----------------------------------------------------------------------
195
 
196
    private final LocalSocketImpl impl;
197
 
198
    // Constructor.
199
    // -----------------------------------------------------------------------
200
 
201
    LocalInputStream (LocalSocketImpl impl)
202
    {
203
      this.impl = impl;
204
    }
205
 
206
    // Instance methods.
207
    // -----------------------------------------------------------------------
208
 
209
    public int available () throws IOException
210
    {
211
      return impl.available();
212
    }
213
 
214
    public boolean markSupported ()
215
    {
216
      return false;
217
    }
218
 
219
    public void mark (int readLimit)
220
    {
221
    }
222
 
223
    public void reset () throws IOException
224
    {
225
      throw new IOException ("mark/reset not supported");
226
    }
227
 
228
    public void close () throws IOException
229
    {
230
      impl.close();
231
    }
232
 
233
    public int read () throws IOException
234
    {
235
      byte[] buf = new byte[1];
236
      int ret = read (buf);
237
      if (ret != -1)
238
        {
239
          return buf[0] & 0xFF;
240
        }
241
      else
242
        {
243
          return -1;
244
        }
245
    }
246
 
247
    public int read (byte[] buf) throws IOException
248
    {
249
      return read (buf, 0, buf.length);
250
    }
251
 
252
    public int read (byte[] buf, int off, int len) throws IOException
253
    {
254
      int ret = impl.read (buf, off, len);
255
 
256
      if (ret == 0)
257
        {
258
          return -1;
259
        }
260
 
261
      return ret;
262
    }
263
  }
264
 
265
  class LocalOutputStream extends OutputStream
266
  {
267
 
268
    // Field.
269
    // -----------------------------------------------------------------------
270
 
271
    private final LocalSocketImpl impl;
272
 
273
    // Constructor.
274
    // -----------------------------------------------------------------------
275
 
276
    LocalOutputStream (LocalSocketImpl impl)
277
    {
278
      this.impl = impl;
279
    }
280
 
281
    // Instance methods.
282
    // -----------------------------------------------------------------------
283
 
284
    public void close () throws IOException
285
    {
286
      impl.close ();
287
    }
288
 
289
    public void flush () throws IOException
290
    {
291
    }
292
 
293
    public void write (int b) throws IOException
294
    {
295
      byte[] buf = new byte [1];
296
      buf[0] = (byte) b;
297
      write (buf);
298
    }
299
 
300
    public void write (byte[] buf) throws IOException
301
    {
302
      write (buf, 0, buf.length);
303
    }
304
 
305
    public void write (byte[] buf, int off, int len) throws IOException
306
    {
307
      impl.write (buf, off, len);
308
    }
309
  }
310
}

powered by: WebSVN 2.1.0

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