Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Side by Side Diff: remoting/host/ack_or_timeout_reporter.h

Issue 719983002: Reporting of policy errors via host-offline-reason: part 3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@hor-nohoststatussender
Patch Set: Trying to see how things look without mock_callback.h Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
6 #define REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
7
8 #include "base/callback.h"
9 #include "base/sequenced_task_runner.h"
10 #include "base/time/time.h"
Lambros 2014/12/05 22:19:48 nit: Remove this and forward-declare base::TimeDel
Łukasz Anforowicz 2014/12/05 23:59:28 Done for TimeDelta and Callback/Closure.
11
12 namespace remoting {
13
14 enum AckOrTimeout { Ack, Timeout };
15
16 // ReportAckOrTimeout will call |ack_or_timeout_callback|, when either
17 // |ack_callback| is called or when |timeout| has been reached. This
18 // is helpful to add timeout functionality to a function that supports
19 // acking, but doesn't support timeouts.
20 //
21 // As a consequence of using WeakPtr as an implementation detail,
22 // ReportAckOrTimeout requires its caller to make sure that:
23 // - ReportAckOfTimeout is called on |sequenced_task_runner|
24 // - If called, then |ack_callback| will be called on |sequenced_task_runner|
25 //
26 // ReportAckOrTimeout guarantees that:
27 // - |function_that_acks| will be called synchronously (i.e. caller
28 // can destroy |function_that_acks| and/or its base::Unretained
29 // arguments as soon as ReportAckOrTimeout returns).
30 // - |ack_or_timeout_callback| will be called exactly once.
31 // - |ack_or_timeout_callback| will be called via |sequenced_task_runner|.
32 // - All references (i.e. ref-counted arguments) to |ack_or_timeout_callback|
33 // will be dropped after it is called.
34 void ReportAckOrTimeout(
35 const base::Callback<void(const base::Closure& ack_callback)>&
36 function_that_acks,
37 const base::TimeDelta& timeout,
38 scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner,
39 const base::Callback<void(AckOrTimeout ack_or_timeout)>&
40 ack_or_timeout_callback);
41
42 } // namespace remoting
43
44 #endif // REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
OLDNEW
« no previous file with comments | « no previous file | remoting/host/ack_or_timeout_reporter.cc » ('j') | remoting/host/ack_or_timeout_reporter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698