Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
dart::ServiceEvent Class Reference

#include <service_event.h>

Classes

struct  ExtensionEvent
 
struct  LogRecord
 

Public Types

enum  EventKind {
  kVMUpdate , kVMFlagUpdate , kIsolateStart , kIsolateRunnable ,
  kIsolateExit , kIsolateUpdate , kIsolateReload , kServiceExtensionAdded ,
  kPauseStart , kPauseExit , kPauseBreakpoint , kPauseInterrupted ,
  kPauseException , kPausePostRequest , kNone , kResume ,
  kBreakpointAdded , kBreakpointResolved , kBreakpointRemoved , kBreakpointUpdated ,
  kInspect , kDebuggerSettingsUpdate , kGC , kEmbedder ,
  kLogging , kExtension , kTimelineEvents , kTimelineStreamSubscriptionsUpdate ,
  kUserTagChanged , kCpuSamples , kIllegal
}
 

Public Member Functions

 ServiceEvent (EventKind event_kind)
 
 ServiceEvent (IsolateGroup *isolate_group, EventKind event_kind)
 
 ServiceEvent (Isolate *isolate, EventKind event_kind)
 
Isolateisolate () const
 
IsolateGroupisolate_group () const
 
Dart_Port isolate_id () const
 
EventKind kind () const
 
bool IsPause () const
 
const char * flag_name () const
 
void set_flag_name (const char *flag)
 
const char * flag_new_value () const
 
void set_flag_new_value (const char *value)
 
const char * previous_tag () const
 
void set_previous_tag (const char *previous_tag)
 
const char * updated_tag () const
 
void set_updated_tag (const char *updated_tag)
 
const char * embedder_kind () const
 
const char * KindAsCString () const
 
void set_embedder_kind (const char *embedder_kind)
 
const StreamInfostream_info () const
 
const char * stream_id () const
 
void set_embedder_stream_id (const char *stream_id)
 
Breakpointbreakpoint () const
 
void set_breakpoint (Breakpoint *bpt)
 
ActivationFrametop_frame () const
 
void set_top_frame (ActivationFrame *frame)
 
const Stringextension_rpc () const
 
void set_extension_rpc (const String *extension_rpc)
 
const Objectexception () const
 
void set_exception (const Object *exception)
 
const Errorreload_error () const
 
void set_reload_error (const Error *error)
 
bool at_async_jump () const
 
void set_at_async_jump (bool value)
 
const Objectinspectee () const
 
void set_inspectee (const Object *inspectee)
 
const Heap::GCStats * gc_stats () const
 
void set_gc_stats (const Heap::GCStats *gc_stats)
 
const uint8_t * bytes () const
 
intptr_t bytes_length () const
 
void set_bytes (const uint8_t *bytes, intptr_t bytes_length)
 
void set_log_record (const LogRecord &log_record)
 
void set_extension_event (const ExtensionEvent &extension_event)
 
void UpdateTimestamp ()
 
int64_t timestamp () const
 
const TimelineEventBlock * timeline_event_block () const
 
void set_timeline_event_block (const TimelineEventBlock *block)
 
Profilecpu_profile () const
 
void set_cpu_profile (Profile *profile)
 
void PrintJSON (JSONStream *js) const
 
void PrintJSONHeader (JSONObject *jsobj) const
 

Detailed Description

Definition at line 24 of file service_event.h.

Member Enumeration Documentation

◆ EventKind

Enumerator
kVMUpdate 
kVMFlagUpdate 
kIsolateStart 
kIsolateRunnable 
kIsolateExit 
kIsolateUpdate 
kIsolateReload 
kServiceExtensionAdded 
kPauseStart 
kPauseExit 
kPauseBreakpoint 
kPauseInterrupted 
kPauseException 
kPausePostRequest 
kNone 
kResume 
kBreakpointAdded 
kBreakpointResolved 
kBreakpointRemoved 
kBreakpointUpdated 
kInspect 
kDebuggerSettingsUpdate 
kGC 
kEmbedder 
kLogging 
kExtension 
kTimelineEvents 
kTimelineStreamSubscriptionsUpdate 
kUserTagChanged 
kCpuSamples 
kIllegal 

Definition at line 26 of file service_event.h.

26 {
27 kVMUpdate, // VM identity information has changed
28 kVMFlagUpdate, // VM flags updated
29
30 kIsolateStart, // New isolate has started
31 kIsolateRunnable, // Isolate is ready to run
32 kIsolateExit, // Isolate has exited
33 kIsolateUpdate, // Isolate identity information has changed
34 kIsolateReload, // Result of a reload request
35 kServiceExtensionAdded, // A service extension was registered
36
37 kPauseStart, // --pause-isolates-on-start
38 kPauseExit, // --pause-isolates-on-exit
42 kPausePostRequest, // isolate is paused after a service request.
43 kNone, // isolate has not been made runnable yet.
44 kResume,
51
52 kGC,
53
55
57
59
61 // Sent when SetVMTimelineFlags is called.
63
65
67
69 };

Constructor & Destructor Documentation

◆ ServiceEvent() [1/3]

dart::ServiceEvent::ServiceEvent ( EventKind  event_kind)
explicit

Definition at line 16 of file service_event.cc.

17 : ServiceEvent(nullptr, nullptr, event_kind) {}
ServiceEvent(EventKind event_kind)

◆ ServiceEvent() [2/3]

dart::ServiceEvent::ServiceEvent ( IsolateGroup isolate_group,
EventKind  event_kind 
)

Definition at line 19 of file service_event.cc.

20 : ServiceEvent(isolate_group, nullptr, event_kind) {}
IsolateGroup * isolate_group() const

◆ ServiceEvent() [3/3]

dart::ServiceEvent::ServiceEvent ( Isolate isolate,
EventKind  event_kind 
)

Definition at line 22 of file service_event.cc.

23 : ServiceEvent(isolate != nullptr ? isolate->group() : nullptr,
24 isolate,
25 event_kind) {}
IsolateGroup * group() const
Definition isolate.h:990
Isolate * isolate() const

Member Function Documentation

◆ at_async_jump()

bool dart::ServiceEvent::at_async_jump ( ) const
inline

Definition at line 178 of file service_event.h.

178{ return at_async_jump_; }

◆ breakpoint()

Breakpoint * dart::ServiceEvent::breakpoint ( ) const
inline

Definition at line 142 of file service_event.h.

142{ return breakpoint_; }

◆ bytes()

const uint8_t * dart::ServiceEvent::bytes ( ) const
inline

Definition at line 191 of file service_event.h.

191{ return bytes_; }

◆ bytes_length()

intptr_t dart::ServiceEvent::bytes_length ( ) const
inline

Definition at line 193 of file service_event.h.

193{ return bytes_length_; }

◆ cpu_profile()

Profile * dart::ServiceEvent::cpu_profile ( ) const
inline

Definition at line 219 of file service_event.h.

219{ return cpu_profile_; }

◆ embedder_kind()

const char * dart::ServiceEvent::embedder_kind ( ) const
inline

Definition at line 127 of file service_event.h.

127{ return embedder_kind_; }

◆ exception()

const Object * dart::ServiceEvent::exception ( ) const
inline

Definition at line 163 of file service_event.h.

163{ return exception_; }

◆ extension_rpc()

const String * dart::ServiceEvent::extension_rpc ( ) const
inline

Definition at line 158 of file service_event.h.

158{ return extension_rpc_; }

◆ flag_name()

const char * dart::ServiceEvent::flag_name ( ) const
inline

Definition at line 113 of file service_event.h.

113{ return flag_name_; }

◆ flag_new_value()

const char * dart::ServiceEvent::flag_new_value ( ) const
inline

Definition at line 116 of file service_event.h.

116{ return flag_new_value_; }

◆ gc_stats()

const Heap::GCStats * dart::ServiceEvent::gc_stats ( ) const
inline

Definition at line 187 of file service_event.h.

187{ return gc_stats_; }

◆ inspectee()

const Object * dart::ServiceEvent::inspectee ( ) const
inline

Definition at line 181 of file service_event.h.

181{ return inspectee_; }

◆ isolate()

Isolate * dart::ServiceEvent::isolate ( ) const
inline

Definition at line 91 of file service_event.h.

91{ return isolate_; }

◆ isolate_group()

IsolateGroup * dart::ServiceEvent::isolate_group ( ) const
inline

Definition at line 92 of file service_event.h.

92{ return isolate_group_; }

◆ isolate_id()

Dart_Port dart::ServiceEvent::isolate_id ( ) const
inline

Definition at line 95 of file service_event.h.

95{ return isolate_->main_port(); }
Dart_Port main_port() const
Definition isolate.h:1001

◆ IsPause()

bool dart::ServiceEvent::IsPause ( ) const
inline

Definition at line 99 of file service_event.h.

99 {
100 switch (kind()) {
101 case kPauseStart:
102 case kPauseExit:
103 case kPauseBreakpoint:
105 case kPauseException:
107 return true;
108 default:
109 return false;
110 }
111 }
EventKind kind() const

◆ kind()

EventKind dart::ServiceEvent::kind ( ) const
inline

Definition at line 97 of file service_event.h.

97{ return kind_; }

◆ KindAsCString()

const char * dart::ServiceEvent::KindAsCString ( ) const

Definition at line 85 of file service_event.cc.

85 {
86 switch (kind()) {
87 case kVMUpdate:
88 return "VMUpdate";
89 case kVMFlagUpdate:
90 return "VMFlagUpdate";
91 case kIsolateStart:
92 return "IsolateStart";
94 return "IsolateRunnable";
95 case kIsolateExit:
96 return "IsolateExit";
97 case kIsolateUpdate:
98 return "IsolateUpdate";
100 return "ServiceExtensionAdded";
101 case kIsolateReload:
102 return "IsolateReload";
103 case kPauseStart:
104 return "PauseStart";
105 case kPauseExit:
106 return "PauseExit";
107 case kPauseBreakpoint:
108 return "PauseBreakpoint";
110 return "PauseInterrupted";
111 case kPauseException:
112 return "PauseException";
114 return "PausePostRequest";
115 case kNone:
116 return "None";
117 case kResume:
118 return "Resume";
119 case kBreakpointAdded:
120 return "BreakpointAdded";
122 return "BreakpointResolved";
124 return "BreakpointRemoved";
126 return "BreakpointUpdated";
127 case kGC:
128 return "GC"; // TODO(koda): Change to GarbageCollected.
129 case kInspect:
130 return "Inspect";
131 case kEmbedder:
132 return embedder_kind();
133 case kLogging:
134 return "Logging";
136 return "_DebuggerSettingsUpdate";
137 case kIllegal:
138 return "Illegal";
139 case kExtension:
140 return "Extension";
141 case kTimelineEvents:
142 return "TimelineEvents";
144 return "TimelineStreamSubscriptionsUpdate";
145 case kUserTagChanged:
146 return "UserTagChanged";
147 case kCpuSamples:
148 return "CpuSamples";
149 default:
150 UNREACHABLE();
151 return "Unknown";
152 }
153}
#define UNREACHABLE()
Definition assert.h:248
const char * embedder_kind() const

◆ previous_tag()

const char * dart::ServiceEvent::previous_tag ( ) const
inline

Definition at line 119 of file service_event.h.

119{ return previous_tag_; }

◆ PrintJSON()

void dart::ServiceEvent::PrintJSON ( JSONStream js) const

Definition at line 221 of file service_event.cc.

221 {
222 JSONObject jsobj(js);
223 PrintJSONHeader(&jsobj);
224 if (kind() == kVMFlagUpdate) {
225 jsobj.AddProperty("flag", flag_name());
226 // For backwards compatibility, "new_value" is also provided.
227 jsobj.AddProperty("newValue", flag_new_value());
228 }
229 if (kind() == kUserTagChanged) {
230 jsobj.AddProperty("previousTag", previous_tag());
231 jsobj.AddProperty("updatedTag", updated_tag());
232 }
233 if (kind() == kIsolateReload) {
234 if (reload_error_ == nullptr) {
235 jsobj.AddProperty("status", "success");
236 } else {
237 jsobj.AddProperty("status", "failure");
238 jsobj.AddProperty("reloadError", *(reload_error()));
239 }
240 }
241 if (kind() == kServiceExtensionAdded) {
242 ASSERT(extension_rpc_ != nullptr);
243 jsobj.AddProperty("extensionRPC", extension_rpc_->ToCString());
244 }
245 if (kind() == kPauseBreakpoint) {
246 JSONArray jsarr(&jsobj, "pauseBreakpoints");
247 // TODO(rmacnak): If we are paused at more than one breakpoint,
248 // provide it here.
249 if (breakpoint() != nullptr) {
250 jsarr.AddValue(breakpoint());
251 }
252 } else {
253 if (breakpoint() != nullptr) {
254 jsobj.AddProperty("breakpoint", breakpoint());
255 }
256 }
257 if (kind() == kTimelineEvents) {
258 jsobj.AddProperty("timelineEvents", timeline_event_block_);
259 }
261 JSONArray arr(&jsobj, "updatedStreams");
262 Timeline::PrintFlagsToJSONArray(&arr);
263 }
264 if (kind() == kDebuggerSettingsUpdate) {
265 JSONObject jssettings(&jsobj, "_debuggerSettings");
266 isolate()->debugger()->PrintSettingsToJSONObject(&jssettings);
267 }
268#if !defined(DART_PRECOMPILED_RUNTIME)
269 if (top_frame() != nullptr) {
270 JSONObject jsFrame(&jsobj, "topFrame");
271 top_frame()->PrintToJSONObject(&jsFrame);
272 intptr_t index = 0; // Avoid ambiguity in call to AddProperty.
273 jsFrame.AddProperty("index", index);
274 }
275#endif
276 if (exception() != nullptr) {
277 jsobj.AddProperty("exception", *(exception()));
278 }
279 if (at_async_jump()) {
280 jsobj.AddProperty("atAsyncSuspension", true);
281 }
282 if (inspectee() != nullptr) {
283 jsobj.AddProperty("inspectee", *(inspectee()));
284 }
285 if (gc_stats() != nullptr) {
286 jsobj.AddProperty("reason", Heap::GCReasonToString(gc_stats()->reason_));
287 jsobj.AddProperty("gcType", Heap::GCTypeToString(gc_stats()->type_));
290 }
291 if (bytes() != nullptr) {
292 jsobj.AddPropertyBase64("bytes", bytes(), bytes_length());
293 }
294 if (kind() == kLogging) {
295 JSONObject logRecord(&jsobj, "logRecord");
296 logRecord.AddProperty("type", "LogRecord");
297 logRecord.AddProperty64("sequenceNumber", log_record_.sequence_number);
298 logRecord.AddPropertyTimeMillis("time", log_record_.timestamp);
299 logRecord.AddProperty64("level", log_record_.level);
300 logRecord.AddProperty("loggerName", *(log_record_.name));
301 logRecord.AddProperty("message", *(log_record_.message));
302 logRecord.AddProperty("zone", *(log_record_.zone));
303 logRecord.AddProperty("error", *(log_record_.error));
304 logRecord.AddProperty("stackTrace", *(log_record_.stack_trace));
305 }
306 if (kind() == kExtension) {
307 js->AppendSerializedObject("extensionData",
308 extension_event_.event_data->ToCString());
309 }
310
311 if (kind() == kCpuSamples) {
312 JSONObject cpu_profile(&jsobj, "cpuSamples");
313 cpu_profile_->PrintProfileJSON(&cpu_profile, /*include_code_samples=*/false,
314 /*is_event=*/true);
315 }
316}
void PrintToJSONObject(JSONObject *jsobj)
Definition debugger.cc:1221
void PrintSettingsToJSONObject(JSONObject *jsobj) const
Definition debugger.cc:468
static const char * GCReasonToString(GCReason reason)
Definition heap.cc:849
@ kNew
Definition heap.h:38
@ kOld
Definition heap.h:39
void PrintToJSONObject(Space space, JSONObject *object) const
Definition heap.cc:973
static const char * GCTypeToString(GCType type)
Definition heap.cc:831
Heap * heap() const
Definition isolate.h:295
Debugger * debugger() const
Definition isolate.h:1061
void PrintProfileJSON(JSONStream *stream, bool include_code_samples)
Profile * cpu_profile() const
Breakpoint * breakpoint() const
const char * previous_tag() const
intptr_t bytes_length() const
bool at_async_jump() const
const Object * exception() const
const uint8_t * bytes() const
const char * updated_tag() const
ActivationFrame * top_frame() const
const Object * inspectee() const
const char * flag_new_value() const
const char * flag_name() const
void PrintJSONHeader(JSONObject *jsobj) const
const Heap::GCStats * gc_stats() const
const Error * reload_error() const
static const char * ToCString(Thread *thread, StringPtr ptr)
Definition object.cc:24205
#define ASSERT(E)

◆ PrintJSONHeader()

void dart::ServiceEvent::PrintJSONHeader ( JSONObject jsobj) const

Definition at line 318 of file service_event.cc.

318 {
319 ASSERT(jsobj != nullptr);
320 jsobj->AddProperty("type", "Event");
321 jsobj->AddProperty("kind", KindAsCString());
322 if (kind() == kExtension) {
323 ASSERT(extension_event_.event_kind != nullptr);
324 jsobj->AddProperty("extensionKind",
325 extension_event_.event_kind->ToCString());
326 }
327 if (isolate_group() != nullptr) {
328 jsobj->AddProperty("isolateGroup", isolate_group());
329 }
330 if (isolate() != nullptr) {
331 ASSERT(isolate_group() != nullptr);
332 jsobj->AddProperty("isolate", isolate());
333 }
334 if (isolate_group() == nullptr && isolate() == nullptr) {
335 jsobj->AddPropertyVM("vm");
336 }
337 ASSERT(timestamp_ != -1);
338 jsobj->AddPropertyTimeMillis("timestamp", timestamp_);
339}
const char * KindAsCString() const

◆ reload_error()

const Error * dart::ServiceEvent::reload_error ( ) const
inline

Definition at line 169 of file service_event.h.

169 {
170 ASSERT(kind_ == kIsolateReload);
171 return reload_error_;
172 }

◆ set_at_async_jump()

void dart::ServiceEvent::set_at_async_jump ( bool  value)
inline

Definition at line 179 of file service_event.h.

179{ at_async_jump_ = value; }
uint8_t value

◆ set_breakpoint()

void dart::ServiceEvent::set_breakpoint ( Breakpoint bpt)
inline

Definition at line 143 of file service_event.h.

143 {
147 breakpoint_ = bpt;
148 }

◆ set_bytes()

void dart::ServiceEvent::set_bytes ( const uint8_t *  bytes,
intptr_t  bytes_length 
)
inline

Definition at line 195 of file service_event.h.

195 {
196 bytes_ = bytes;
197 bytes_length_ = bytes_length;
198 }

◆ set_cpu_profile()

void dart::ServiceEvent::set_cpu_profile ( Profile profile)
inline

Definition at line 220 of file service_event.h.

220{ cpu_profile_ = profile; }

◆ set_embedder_kind()

void dart::ServiceEvent::set_embedder_kind ( const char *  embedder_kind)
inline

Definition at line 131 of file service_event.h.

131 {
132 embedder_kind_ = embedder_kind;
133 }

◆ set_embedder_stream_id()

void dart::ServiceEvent::set_embedder_stream_id ( const char *  stream_id)
inline

Definition at line 138 of file service_event.h.

138 {
139 embedder_stream_id_ = stream_id;
140 }
const char * stream_id() const

◆ set_exception()

void dart::ServiceEvent::set_exception ( const Object exception)
inline

Definition at line 164 of file service_event.h.

164 {
165 ASSERT(kind_ == kPauseException);
166 exception_ = exception;
167 }

◆ set_extension_event()

void dart::ServiceEvent::set_extension_event ( const ExtensionEvent extension_event)
inline

Definition at line 202 of file service_event.h.

202 {
203 extension_event_ = extension_event;
204 }

◆ set_extension_rpc()

void dart::ServiceEvent::set_extension_rpc ( const String extension_rpc)
inline

Definition at line 159 of file service_event.h.

159 {
160 extension_rpc_ = extension_rpc;
161 }
const String * extension_rpc() const

◆ set_flag_name()

void dart::ServiceEvent::set_flag_name ( const char *  flag)
inline

Definition at line 114 of file service_event.h.

114{ flag_name_ = flag; }
FlutterSemanticsFlag flag

◆ set_flag_new_value()

void dart::ServiceEvent::set_flag_new_value ( const char *  value)
inline

Definition at line 117 of file service_event.h.

117{ flag_new_value_ = value; }

◆ set_gc_stats()

void dart::ServiceEvent::set_gc_stats ( const Heap::GCStats *  gc_stats)
inline

Definition at line 189 of file service_event.h.

189{ gc_stats_ = gc_stats; }

◆ set_inspectee()

void dart::ServiceEvent::set_inspectee ( const Object inspectee)
inline

Definition at line 182 of file service_event.h.

182 {
183 ASSERT(kind_ == kInspect);
184 inspectee_ = inspectee;
185 }

◆ set_log_record()

void dart::ServiceEvent::set_log_record ( const LogRecord log_record)
inline

Definition at line 200 of file service_event.h.

200{ log_record_ = log_record; }

◆ set_previous_tag()

void dart::ServiceEvent::set_previous_tag ( const char *  previous_tag)
inline

Definition at line 120 of file service_event.h.

120 {
121 previous_tag_ = previous_tag;
122 }

◆ set_reload_error()

void dart::ServiceEvent::set_reload_error ( const Error error)
inline

Definition at line 173 of file service_event.h.

173 {
174 ASSERT(kind_ == kIsolateReload);
175 reload_error_ = error;
176 }
const uint8_t uint32_t uint32_t GError ** error

◆ set_timeline_event_block()

void dart::ServiceEvent::set_timeline_event_block ( const TimelineEventBlock *  block)
inline

Definition at line 214 of file service_event.h.

214 {
216 timeline_event_block_ = block;
217 }

◆ set_top_frame()

void dart::ServiceEvent::set_top_frame ( ActivationFrame frame)
inline

Definition at line 151 of file service_event.h.

151 {
154 kind() == kResume);
155 top_frame_ = frame;
156 }
double frame
Definition examples.cpp:31

◆ set_updated_tag()

void dart::ServiceEvent::set_updated_tag ( const char *  updated_tag)
inline

Definition at line 125 of file service_event.h.

125{ updated_tag_ = updated_tag; }

◆ stream_id()

const char * dart::ServiceEvent::stream_id ( ) const

Definition at line 211 of file service_event.cc.

211 {
212 const StreamInfo* stream = stream_info();
213 if (stream == nullptr) {
214 ASSERT(kind() == kEmbedder);
215 return embedder_stream_id_;
216 } else {
217 return stream->id();
218 }
219}
const StreamInfo * stream_info() const

◆ stream_info()

const StreamInfo * dart::ServiceEvent::stream_info ( ) const

Definition at line 155 of file service_event.cc.

155 {
156 switch (kind()) {
157 case kVMUpdate:
158 case kVMFlagUpdate:
159 return &Service::vm_stream;
160
161 case kIsolateStart:
162 case kIsolateRunnable:
163 case kIsolateExit:
164 case kIsolateUpdate:
165 case kIsolateReload:
168
169 case kPauseStart:
170 case kPauseExit:
171 case kPauseBreakpoint:
173 case kPauseException:
175 case kNone:
176 case kResume:
177 case kBreakpointAdded:
181 case kInspect:
183 return &Service::debug_stream;
184
185 case kGC:
186 return &Service::gc_stream;
187
188 case kLogging:
190
191 case kExtension:
193
194 case kTimelineEvents:
197
198 case kEmbedder:
199 return nullptr;
200
201 case kCpuSamples:
202 case kUserTagChanged:
204
205 default:
206 UNREACHABLE();
207 return nullptr;
208 }
209}
static StreamInfo isolate_stream
Definition service.h:180
static StreamInfo timeline_stream
Definition service.h:187
static StreamInfo debug_stream
Definition service.h:181
static StreamInfo vm_stream
Definition service.h:179
static StreamInfo logging_stream
Definition service.h:185
static StreamInfo profiler_stream
Definition service.h:188
static StreamInfo gc_stream
Definition service.h:182
static StreamInfo extension_stream
Definition service.h:186

◆ timeline_event_block()

const TimelineEventBlock * dart::ServiceEvent::timeline_event_block ( ) const
inline

Definition at line 210 of file service_event.h.

210 {
211 return timeline_event_block_;
212 }

◆ timestamp()

int64_t dart::ServiceEvent::timestamp ( ) const
inline

Definition at line 208 of file service_event.h.

208{ return timestamp_; }

◆ top_frame()

ActivationFrame * dart::ServiceEvent::top_frame ( ) const
inline

Definition at line 150 of file service_event.h.

150{ return top_frame_; }

◆ updated_tag()

const char * dart::ServiceEvent::updated_tag ( ) const
inline

Definition at line 124 of file service_event.h.

124{ return updated_tag_; }

◆ UpdateTimestamp()

void dart::ServiceEvent::UpdateTimestamp ( )

Definition at line 81 of file service_event.cc.

81 {
82 timestamp_ = OS::GetCurrentTimeMillis();
83}
static int64_t GetCurrentTimeMillis()

The documentation for this class was generated from the following files: