SBAttachInfo.h revision 341825
1//===-- SBAttachInfo.h ------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SBAttachInfo_h_
11#define LLDB_SBAttachInfo_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17class SBTarget;
18
19class LLDB_API SBAttachInfo {
20public:
21  SBAttachInfo();
22
23  SBAttachInfo(lldb::pid_t pid);
24
25  //------------------------------------------------------------------
26  /// Attach to a process by name.
27  ///
28  /// This function implies that a future call to SBTarget::Attach(...)
29  /// will be synchronous.
30  ///
31  /// @param[in] path
32  ///     A full or partial name for the process to attach to.
33  ///
34  /// @param[in] wait_for
35  ///     If \b false, attach to an existing process whose name matches.
36  ///     If \b true, then wait for the next process whose name matches.
37  //------------------------------------------------------------------
38  SBAttachInfo(const char *path, bool wait_for);
39
40  //------------------------------------------------------------------
41  /// Attach to a process by name.
42  ///
43  /// Future calls to SBTarget::Attach(...) will be synchronous or
44  /// asynchronous depending on the \a async argument.
45  ///
46  /// @param[in] path
47  ///     A full or partial name for the process to attach to.
48  ///
49  /// @param[in] wait_for
50  ///     If \b false, attach to an existing process whose name matches.
51  ///     If \b true, then wait for the next process whose name matches.
52  ///
53  /// @param[in] async
54  ///     If \b false, then the SBTarget::Attach(...) call will be a
55  ///     synchronous call with no way to cancel the attach in
56  ///     progress.
57  ///     If \b true, then the SBTarget::Attach(...) function will
58  ///     return immediately and clients are expected to wait for a
59  ///     process eStateStopped event if a suitable process is
60  ///     eventually found. If the client wants to cancel the event,
61  ///     SBProcess::Stop() can be called and an eStateExited process
62  ///     event will be delivered.
63  //------------------------------------------------------------------
64  SBAttachInfo(const char *path, bool wait_for, bool async);
65
66  SBAttachInfo(const SBAttachInfo &rhs);
67
68  ~SBAttachInfo();
69
70  SBAttachInfo &operator=(const SBAttachInfo &rhs);
71
72  lldb::pid_t GetProcessID();
73
74  void SetProcessID(lldb::pid_t pid);
75
76  void SetExecutable(const char *path);
77
78  void SetExecutable(lldb::SBFileSpec exe_file);
79
80  bool GetWaitForLaunch();
81
82  //------------------------------------------------------------------
83  /// Set attach by process name settings.
84  ///
85  /// Designed to be used after a call to SBAttachInfo::SetExecutable().
86  /// This function implies that a call to SBTarget::Attach(...) will
87  /// be synchronous.
88  ///
89  /// @param[in] b
90  ///     If \b false, attach to an existing process whose name matches.
91  ///     If \b true, then wait for the next process whose name matches.
92  //------------------------------------------------------------------
93  void SetWaitForLaunch(bool b);
94
95  //------------------------------------------------------------------
96  /// Set attach by process name settings.
97  ///
98  /// Designed to be used after a call to SBAttachInfo::SetExecutable().
99  /// Future calls to SBTarget::Attach(...) will be synchronous or
100  /// asynchronous depending on the \a async argument.
101  ///
102  /// @param[in] b
103  ///     If \b false, attach to an existing process whose name matches.
104  ///     If \b true, then wait for the next process whose name matches.
105  ///
106  /// @param[in] async
107  ///     If \b false, then the SBTarget::Attach(...) call will be a
108  ///     synchronous call with no way to cancel the attach in
109  ///     progress.
110  ///     If \b true, then the SBTarget::Attach(...) function will
111  ///     return immediately and clients are expected to wait for a
112  ///     process eStateStopped event if a suitable process is
113  ///     eventually found. If the client wants to cancel the event,
114  ///     SBProcess::Stop() can be called and an eStateExited process
115  ///     event will be delivered.
116  //------------------------------------------------------------------
117  void SetWaitForLaunch(bool b, bool async);
118
119  bool GetIgnoreExisting();
120
121  void SetIgnoreExisting(bool b);
122
123  uint32_t GetResumeCount();
124
125  void SetResumeCount(uint32_t c);
126
127  const char *GetProcessPluginName();
128
129  void SetProcessPluginName(const char *plugin_name);
130
131  uint32_t GetUserID();
132
133  uint32_t GetGroupID();
134
135  bool UserIDIsValid();
136
137  bool GroupIDIsValid();
138
139  void SetUserID(uint32_t uid);
140
141  void SetGroupID(uint32_t gid);
142
143  uint32_t GetEffectiveUserID();
144
145  uint32_t GetEffectiveGroupID();
146
147  bool EffectiveUserIDIsValid();
148
149  bool EffectiveGroupIDIsValid();
150
151  void SetEffectiveUserID(uint32_t uid);
152
153  void SetEffectiveGroupID(uint32_t gid);
154
155  lldb::pid_t GetParentProcessID();
156
157  void SetParentProcessID(lldb::pid_t pid);
158
159  bool ParentProcessIDIsValid();
160
161  //----------------------------------------------------------------------
162  /// Get the listener that will be used to receive process events.
163  ///
164  /// If no listener has been set via a call to
165  /// SBAttachInfo::SetListener(), then an invalid SBListener will be
166  /// returned (SBListener::IsValid() will return false). If a listener
167  /// has been set, then the valid listener object will be returned.
168  //----------------------------------------------------------------------
169  SBListener GetListener();
170
171  //----------------------------------------------------------------------
172  /// Set the listener that will be used to receive process events.
173  ///
174  /// By default the SBDebugger, which has a listener, that the SBTarget
175  /// belongs to will listen for the process events. Calling this function
176  /// allows a different listener to be used to listen for process events.
177  //----------------------------------------------------------------------
178  void SetListener(SBListener &listener);
179
180protected:
181  friend class SBTarget;
182
183  lldb_private::ProcessAttachInfo &ref();
184
185  ProcessAttachInfoSP m_opaque_sp;
186};
187
188} // namespace lldb
189
190#endif // LLDB_SBAttachInfo_h_
191