01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: *
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18:
19: /**
20: * @author Ivan G. Popov
21: * @version $Revision: 1.5 $
22: */
23:
24: /**
25: * Created on 05.23.2004
26: */package org.apache.harmony.jpda.tests.framework.jdwp;
27:
28: import java.io.IOException;
29:
30: /**
31: * This interface provides wrapper around JDWP transport connection.
32: * Particular implementation can interact directly with raw connection
33: * like SocketTransportWrapper or use JDI service provider interfaces
34: * to support all pluggable JDI transports.
35: *
36: */
37: public interface TransportWrapper {
38:
39: /**
40: * Starts listening for connection on given or default address.
41: *
42: * @param address address to listen or null for default address
43: * @return string representation of listening address
44: */
45: public String startListening(String address) throws IOException;
46:
47: /**
48: * Stops listening for connection on current address.
49: */
50: public void stopListening() throws IOException;
51:
52: /**
53: * Accepts transport connection for currently listened address and performs handshaking
54: * for specified timeout.
55: *
56: * @param acceptTimeout timeout for accepting in milliseconds
57: * @param handshakeTimeout timeout for handshaking in milliseconds
58: */
59: public void accept(long acceptTimeout, long handshakeTimeout)
60: throws IOException;
61:
62: /**
63: * Attaches transport connection to given address and performs handshaking
64: * for specified timeout.
65: *
66: * @param address address for attaching
67: * @param attachTimeout timeout for attaching in milliseconds
68: * @param handshakeTimeout timeout for handshaking in milliseconds
69: */
70: public void attach(String address, long attachTimeout,
71: long handshakeTimeout) throws IOException;
72:
73: /**
74: * Closes transport connection.
75: */
76: public void close() throws IOException;
77:
78: /**
79: * Checks if transport connection is open.
80: *
81: * @return true if transport connection is open
82: */
83: public boolean isOpen();
84:
85: /**
86: * Reads packet from transport connection.
87: *
88: * @return packet as byte array or null or empty packet if connection was closed
89: */
90: public byte[] readPacket() throws IOException;
91:
92: /**
93: * Writes packet to transport connection.
94: *
95: * @param packet packet as byte array
96: */
97: public void writePacket(byte[] packet) throws IOException;
98: }
|