01: /*
02: *
03: *
04: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
05: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
06: *
07: * This program is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU General Public License version
09: * 2 only, as published by the Free Software Foundation.
10: *
11: * This program 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 version 2 for more details (a copy is
15: * included at /legal/license.txt).
16: *
17: * You should have received a copy of the GNU General Public License
18: * version 2 along with this work; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA
21: *
22: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
23: * Clara, CA 95054 or visit www.sun.com if you need additional
24: * information or have any questions.
25: */
26:
27: package com.sun.midp.io.j2me.socket;
28:
29: import java.io.*;
30: import java.net.*;
31: import javax.microedition.io.*;
32:
33: public class Protocol extends com.sun.cdc.io.j2me.socket.Protocol {
34:
35: /** Number of input streams that were opened. */
36: protected int iStreams = 0;
37: /**
38: * Maximum number of open input streams. Set this
39: * to zero to prevent openInputStream from giving out a stream in
40: * write-only mode.
41: */
42: protected int maxIStreams = 1;
43:
44: /*
45: * Open the input stream if it has not already been opened.
46: * @exception IOException is thrown if it has already been
47: * opened.
48: */
49: public InputStream openInputStream() throws IOException {
50: if (maxIStreams == 0) {
51: throw new IOException("no more input streams available");
52: }
53: InputStream i = super .openInputStream();
54: maxIStreams--;
55: iStreams++;
56: return i;
57: }
58:
59: public DataInputStream openDataInputStream() throws IOException {
60: return new DataInputStream(openInputStream());
61: }
62:
63: /* This class overrides the setSocketOption() to allow 0 as a valid value for sendBufferSize
64: * and receiveBufferSize. The underlying CDC networking layer considers 0 as illegal
65: * value and throws IAE which causes the TCK test to fail.
66: */
67: public void setSocketOption(byte option, int value)
68: throws IllegalArgumentException, IOException {
69: if (option == SocketConnection.SNDBUF
70: || option == SocketConnection.RCVBUF) {
71: if (value == 0) {
72: value = 1;
73: super .setSocketOption(option, value);
74: }
75: }
76: super .setSocketOption(option, value);
77: }
78:
79: /*
80: * throws SecurityException if MIDP permission check fails
81: */
82: protected void checkMIDPPermission(String host, int port) {
83: //The actual MIDP permission check happens here
84: }
85:
86: }
|