Flutter Windows Embedder
event_stream_handler_functions.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_EVENT_STREAM_HANDLER_FUNCTIONS_H_
6 #define FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_EVENT_STREAM_HANDLER_FUNCTIONS_H_
7 
8 #include <memory>
9 
10 #include "event_sink.h"
11 #include "event_stream_handler.h"
12 
13 namespace flutter {
14 
15 class EncodableValue;
16 
17 // Handler types for each of the StreamHandler setup and teardown
18 // requests.
19 template <typename T>
20 using StreamHandlerListen =
21  std::function<std::unique_ptr<StreamHandlerError<T>>(
22  const T* arguments,
23  std::unique_ptr<EventSink<T>>&& events)>;
24 
25 template <typename T>
26 using StreamHandlerCancel =
27  std::function<std::unique_ptr<StreamHandlerError<T>>(const T* arguments)>;
28 
29 // An implementation of StreamHandler that pass calls through to
30 // provided function objects.
31 template <typename T = EncodableValue>
33  public:
34  // Creates a handler object that calls the provided functions
35  // for the corresponding StreamHandler outcomes.
37  StreamHandlerCancel<T> on_cancel)
38  : on_listen_(on_listen), on_cancel_(on_cancel) {}
39 
40  virtual ~StreamHandlerFunctions() = default;
41 
42  // Prevent copying.
45 
46  protected:
47  // |flutter::StreamHandler|
48  std::unique_ptr<StreamHandlerError<T>> OnListenInternal(
49  const T* arguments,
50  std::unique_ptr<EventSink<T>>&& events) override {
51  if (on_listen_) {
52  return on_listen_(arguments, std::move(events));
53  }
54 
55  auto error = std::make_unique<StreamHandlerError<T>>(
56  "error", "No OnListen handler set", nullptr);
57  return std::move(error);
58  }
59 
60  // |flutter::StreamHandler|
61  std::unique_ptr<StreamHandlerError<T>> OnCancelInternal(
62  const T* arguments) override {
63  if (on_cancel_) {
64  return on_cancel_(arguments);
65  }
66 
67  auto error = std::make_unique<StreamHandlerError<T>>(
68  "error", "No OnCancel handler set", nullptr);
69  return std::move(error);
70  }
71 
74 };
75 
76 } // namespace flutter
77 
78 #endif // FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_EVENT_STREAM_HANDLER_FUNCTIONS_H_
event_sink.h
flutter::EventSink
Definition: event_sink.h:15
flutter::StreamHandlerFunctions::OnListenInternal
std::unique_ptr< StreamHandlerError< T > > OnListenInternal(const T *arguments, std::unique_ptr< EventSink< T >> &&events) override
Definition: event_stream_handler_functions.h:48
event_stream_handler.h
flutter::StreamHandlerFunctions::on_cancel_
StreamHandlerCancel< T > on_cancel_
Definition: event_stream_handler_functions.h:73
flutter::StreamHandlerFunctions::operator=
StreamHandlerFunctions & operator=(StreamHandlerFunctions const &)=delete
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::StreamHandler
Definition: event_stream_handler.h:38
flutter::StreamHandlerFunctions::OnCancelInternal
std::unique_ptr< StreamHandlerError< T > > OnCancelInternal(const T *arguments) override
Definition: event_stream_handler_functions.h:61
flutter::StreamHandlerFunctions::on_listen_
StreamHandlerListen< T > on_listen_
Definition: event_stream_handler_functions.h:72
flutter::StreamHandlerFunctions::~StreamHandlerFunctions
virtual ~StreamHandlerFunctions()=default
flutter::StreamHandlerFunctions
Definition: event_stream_handler_functions.h:32
flutter::StreamHandlerListen
std::function< std::unique_ptr< StreamHandlerError< T > >(const T *arguments, std::unique_ptr< EventSink< T > > &&events)> StreamHandlerListen
Definition: event_stream_handler_functions.h:23
flutter::StreamHandlerFunctions::StreamHandlerFunctions
StreamHandlerFunctions(StreamHandlerListen< T > on_listen, StreamHandlerCancel< T > on_cancel)
Definition: event_stream_handler_functions.h:36
flutter::StreamHandlerCancel
std::function< std::unique_ptr< StreamHandlerError< T > >(const T *arguments)> StreamHandlerCancel
Definition: event_stream_handler_functions.h:27