org.chromium.sdk/src/org/chromium/sdk/internal/transport/Connection.java
changeset 2 e4420d2515f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.chromium.sdk/src/org/chromium/sdk/internal/transport/Connection.java	Wed Dec 23 17:13:18 2009 -0800
@@ -0,0 +1,80 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.sdk.internal.transport;
+
+import java.io.IOException;
+
+/**
+ * An interface to be implemented by an agent performing the communications with
+ * the debugged browser instance.
+ */
+public interface Connection {
+
+  /**
+   * An interface to be used for notification of messages coming in from the
+   * browser.
+   */
+  public interface NetListener {
+
+    /**
+     * Gets invoked whenever a message from the browser arrives.
+     * Invoked from DispatchThread.
+     * @param message from the browser instance the connection is associated
+     *        with
+     */
+    void messageReceived(Message message);
+
+    /**
+     * Gets invoked from DispatchThread whenever EOS message arrives. This method
+     * must not be called more than once. Method {@link #messageReceived} must
+     * not be called after it.
+     */
+    void eosReceived();
+
+    /**
+     * Gets invoked when the physical connection has been terminated.
+     * Called from whatever thread that connection is terminated from.
+     */
+    void connectionClosed();
+  }
+
+  /**
+   * Sets a listener that will be notified of network events. The listener must
+   * be set before calling {@link #start()} and cannot be changed over the
+   * connection lifetime.
+   *
+   * @param netListener to set
+   */
+  void setNetListener(NetListener netListener);
+
+  /**
+   * Sends the specified message to the associated browser instance.
+   *
+   * @param message to send
+   */
+  void send(Message message);
+
+  /**
+   * Starts up the transport and acquire all needed resources. Does nothing if
+   * the connection has already been started.
+   *
+   * @throws IOException
+   */
+  void start() throws IOException;
+
+  /**
+   * Shuts down the transport freeing all acquired resources. Does nothing if
+   * the connection has already been shut down.
+   */
+  void close();
+
+  /**
+   * Determines the connection state.
+   *
+   * @return whether start() has been successfully invoked and close() has not
+   *         been invoked yet
+   */
+  boolean isConnected();
+}