blob: b58d1c4d905343e47361189f48bad16b8ea24e05 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_SESSION_OBSERVER_H_
#define SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_SESSION_OBSERVER_H_
#include <string>
#include <vector>
#include "src/developer/debug/ipc/records.h"
namespace zxdb {
class SessionObserver {
public:
// The session can send notifications over to whatever UI is controlling it. This is similar to
// what the System does, but permits sending more generic messages and let the UI decide how to
// handle, instead of just logging to stdout/stderr.
//
// This is specially important when receiving arbitrary messages from the debug agent and the fact
// the the cli console has special states for the terminal state.
enum class NotificationType {
kNone, // Meant to signal a no-op.
kError,
kProcessEnteredLimbo,
kProcessStderr,
kProcessStdout,
kWarning,
};
static const char* NotificationTypeToString(NotificationType);
virtual void HandleNotification(NotificationType, const std::string&) {}
virtual void HandlePreviousConnectedProcesses(const std::vector<debug_ipc::ProcessRecord>&) {}
virtual void HandleProcessesInLimbo(const std::vector<debug_ipc::ProcessRecord>&) {}
};
} // namespace zxdb
#endif // SRC_DEVELOPER_DEBUG_ZXDB_CLIENT_SESSION_OBSERVER_H_