org.chromium.sdk/src/org/chromium/sdk/internal/transport/Connection.java
changeset 2 e4420d2515f1
equal deleted inserted replaced
1:ef76fc2ac88c 2:e4420d2515f1
       
     1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
       
     2 // Use of this source code is governed by a BSD-style license that can be
       
     3 // found in the LICENSE file.
       
     4 
       
     5 package org.chromium.sdk.internal.transport;
       
     6 
       
     7 import java.io.IOException;
       
     8 
       
     9 /**
       
    10  * An interface to be implemented by an agent performing the communications with
       
    11  * the debugged browser instance.
       
    12  */
       
    13 public interface Connection {
       
    14 
       
    15   /**
       
    16    * An interface to be used for notification of messages coming in from the
       
    17    * browser.
       
    18    */
       
    19   public interface NetListener {
       
    20 
       
    21     /**
       
    22      * Gets invoked whenever a message from the browser arrives.
       
    23      * Invoked from DispatchThread.
       
    24      * @param message from the browser instance the connection is associated
       
    25      *        with
       
    26      */
       
    27     void messageReceived(Message message);
       
    28 
       
    29     /**
       
    30      * Gets invoked from DispatchThread whenever EOS message arrives. This method
       
    31      * must not be called more than once. Method {@link #messageReceived} must
       
    32      * not be called after it.
       
    33      */
       
    34     void eosReceived();
       
    35 
       
    36     /**
       
    37      * Gets invoked when the physical connection has been terminated.
       
    38      * Called from whatever thread that connection is terminated from.
       
    39      */
       
    40     void connectionClosed();
       
    41   }
       
    42 
       
    43   /**
       
    44    * Sets a listener that will be notified of network events. The listener must
       
    45    * be set before calling {@link #start()} and cannot be changed over the
       
    46    * connection lifetime.
       
    47    *
       
    48    * @param netListener to set
       
    49    */
       
    50   void setNetListener(NetListener netListener);
       
    51 
       
    52   /**
       
    53    * Sends the specified message to the associated browser instance.
       
    54    *
       
    55    * @param message to send
       
    56    */
       
    57   void send(Message message);
       
    58 
       
    59   /**
       
    60    * Starts up the transport and acquire all needed resources. Does nothing if
       
    61    * the connection has already been started.
       
    62    *
       
    63    * @throws IOException
       
    64    */
       
    65   void start() throws IOException;
       
    66 
       
    67   /**
       
    68    * Shuts down the transport freeing all acquired resources. Does nothing if
       
    69    * the connection has already been shut down.
       
    70    */
       
    71   void close();
       
    72 
       
    73   /**
       
    74    * Determines the connection state.
       
    75    *
       
    76    * @return whether start() has been successfully invoked and close() has not
       
    77    *         been invoked yet
       
    78    */
       
    79   boolean isConnected();
       
    80 }