// 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.shellprotocol.tools;

import org.chromium.sdk.internal.transport.Message;

/**
 * An interface of a tool handler to which responses from certain tools are
 * dispatched.
 */
public interface ToolHandler {

  /**
   * Handles message from a certain tool.
   * Invoked from Dispatch thread (connection-driven).
   *
   * @param message to handle. Never null
   */
  void handleMessage(Message message);

  /**
   * Handles EOS (end-of-stream) message. Should not be called twice. Implementation
   * may rely on this in its clean-up work.
   * Invoked from Dispatch thread (connection-driven).
   */
  void handleEos();

  /**
   * Gets invoked when the debugger has detached from a browser instance (due to
   * the connection loss or a user request).
   */
  void onDebuggerDetached();
}
