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

Unified 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: Rebasing... 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | remoting/host/ack_or_timeout_reporter.cc » ('j') | remoting/host/ack_or_timeout_reporter.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/ack_or_timeout_reporter.h
diff --git a/remoting/host/ack_or_timeout_reporter.h b/remoting/host/ack_or_timeout_reporter.h
new file mode 100644
index 0000000000000000000000000000000000000000..a26454291922b79f668773a62abcb816d23f594c
--- /dev/null
+++ b/remoting/host/ack_or_timeout_reporter.h
@@ -0,0 +1,47 @@
+// Copyright 2014 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.
+
+#ifndef REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
+#define REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
+
+#include "base/callback.h"
+#include "base/sequenced_task_runner.h"
+#include "base/time/time.h"
+
+namespace remoting {
+
+enum AckOrTimeout {
+ Ack,
+ Timeout
+};
+
+// ReportAckOrTimeout will call |ack_or_timeout_callback|, when either
+// |ack_callback| is called or when |timeout| has been reached. This
+// is helpful to add timeout functionality to a function that supports
+// acking, but doesn't support timeouts.
+//
+// As a consequence of using WeakPtr as an implementation detail,
+// ReportAckOrTimeout requires its caller to make sure that:
+// - ReportAckOfTimeout is called on |sequenced_task_runner|
+// - If called, then |ack_callback| will be called on |sequenced_task_runner|
+//
+// ReportAckOrTimeout guarantees that:
+// - |function_that_acks| will be called synchronously (i.e. caller
+// can destroy |function_that_acks| and/or its base::Unretained
+// arguments as soon as ReportAckOrTimeout returns).
+// - |ack_or_timeout_callback| will be called exactly once.
+// - |ack_or_timeout_callback| will be called via |sequenced_task_runner|.
+// - All references (i.e. ref-counted arguments) to |ack_or_timeout_callback|
+// will be dropped after it is called.
+void ReportAckOrTimeout(
+ const base::Callback<void(const base::Closure& ack_callback)>
+ function_that_acks,
Lambros 2014/12/03 03:20:25 nit: This should be indented +4 from previous line
+ const base::TimeDelta& timeout,
+ scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner,
+ const base::Callback<void(AckOrTimeout ack_or_timeout)>
+ ack_or_timeout_callback);
Lambros 2014/12/03 03:20:25 nit: Indentation
+
+} // namespace remoting
+
+#endif // REMOTING_HOST_ACK_OR_TIMEOUT_REPORTER_H_
« 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