Home | History | Annotate | Download | only in jdwp
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *     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  */
     22 
     23 /**
     24  * Created on 05.23.2004
     25  */
     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) throws IOException;
     60 
     61     /**
     62      * Attaches transport connection to given address and performs handshaking
     63      * for specified timeout.
     64      *
     65      * @param address address for attaching
     66      * @param attachTimeout timeout for attaching in milliseconds
     67      * @param handshakeTimeout timeout for handshaking in milliseconds
     68      */
     69     public void attach(String address, long attachTimeout, long handshakeTimeout) throws IOException;
     70 
     71     /**
     72      * Closes transport connection.
     73      */
     74     public void close() throws IOException;
     75 
     76     /**
     77      * Checks if transport connection is open.
     78      *
     79      * @return true if transport connection is open
     80      */
     81     public boolean isOpen();
     82 
     83     /**
     84      * Reads packet from transport connection.
     85      *
     86      * @return packet as byte array or null or empty packet if connection was closed
     87      */
     88     public byte[] readPacket() throws IOException;
     89 
     90     /**
     91      * Writes packet to transport connection.
     92      *
     93      * @param packet packet as byte array
     94      */
     95     public void writePacket(byte[] packet) throws IOException;
     96 }
     97