15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Ivan G. Popov 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 05.23.2004 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework.jdwp; 275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport java.io.IOException; 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This interface provides wrapper around JDWP transport connection. 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Particular implementation can interact directly with raw connection 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * like SocketTransportWrapper or use JDI service provider interfaces 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * to support all pluggable JDI transports. 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic interface TransportWrapper { 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Starts listening for connection on given or default address. 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param address address to listen or null for default address 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string representation of listening address 445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String startListening(String address) throws IOException; 465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Stops listening for connection on current address. 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void stopListening() throws IOException; 515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Accepts transport connection for currently listened address and performs handshaking 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * for specified timeout. 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param acceptTimeout timeout for accepting in milliseconds 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param handshakeTimeout timeout for handshaking in milliseconds 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void accept(long acceptTimeout, long handshakeTimeout) throws IOException; 605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Attaches transport connection to given address and performs handshaking 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * for specified timeout. 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param address address for attaching 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param attachTimeout timeout for attaching in milliseconds 675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param handshakeTimeout timeout for handshaking in milliseconds 685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void attach(String address, long attachTimeout, long handshakeTimeout) throws IOException; 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Closes transport connection. 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void close() throws IOException; 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Checks if transport connection is open. 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true if transport connection is open 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isOpen(); 825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Reads packet from transport connection. 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return packet as byte array or null or empty packet if connection was closed 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte[] readPacket() throws IOException; 895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Writes packet to transport connection. 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param packet packet as byte array 945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void writePacket(byte[] packet) throws IOException; 965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 97