Flutter Engine
callback_cache.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_LIB_UI_CALLBACK_CACHE_H_
6 #define FLUTTER_LIB_UI_CALLBACK_CACHE_H_
7 
8 #include <map>
9 #include <memory>
10 #include <mutex>
11 #include <string>
12 
13 #include "flutter/fml/macros.h"
14 #include "third_party/dart/runtime/include/dart_api.h"
15 
16 namespace flutter {
17 
19  std::string name;
20  std::string class_name;
21  std::string library_path;
22 };
23 
25  public:
26  static void SetCachePath(const std::string& path);
27  static std::string GetCachePath() { return cache_path_; }
28 
29  static int64_t GetCallbackHandle(const std::string& name,
30  const std::string& class_name,
31  const std::string& library_path);
32 
33  static Dart_Handle GetCallback(int64_t handle);
34 
35  static std::unique_ptr<DartCallbackRepresentation> GetCallbackInformation(
36  int64_t handle);
37 
38  static void LoadCacheFromDisk();
39 
40  private:
41  static Dart_Handle LookupDartClosure(const std::string& name,
42  const std::string& class_name,
43  const std::string& library_path);
44 
45  static void SaveCacheToDisk();
46 
47  static std::mutex mutex_;
48  static std::string cache_path_;
49 
50  static std::map<int64_t, DartCallbackRepresentation> cache_;
51 
53 };
54 
55 } // namespace flutter
56 
57 #endif // FLUTTER_LIB_UI_CALLBACK_CACHE_H_
DEF_SWITCHES_START snapshot asset path
Definition: switches.h:32
static std::string GetCachePath()
void GetCallbackHandle(Dart_NativeArguments args)
#define FML_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName)
Definition: macros.h:37