MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/xstudio / message_handler

Method message_handler

src/subset/src/subset_actor.cpp:126–856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 return result;
125}
126caf::message_handler SubsetActor::message_handler() {
127 return caf::message_handler{
128 [=](xstudio::broadcast::broadcast_down_atom, const caf::actor_addr &) {},
129
130 [=](get_change_event_group_atom) -> caf::actor { return change_event_group_; },
131
132 [=](session::media_rate_atom atom) {
133 return mail(atom).delegate(caf::actor_cast<caf::actor>(playlist_));
134 },
135
136 [=](playhead::get_selection_atom atom) {
137 // returns UuidList
138 return mail(atom).delegate(caf::actor_cast<caf::actor>(selection_actor_));
139 },
140
141 [=](playlist::select_media_atom atom, const UuidList &media_uuids) {
142 // returns bool
143 return mail(atom, media_uuids)
144 .delegate(caf::actor_cast<caf::actor>(selection_actor_));
145 },
146
147 [=](duplicate_atom) -> result<UuidActor> {
148 // clone ourself..
149 auto rp = make_response_promise<UuidActor>();
150
151 auto uuid = utility::Uuid::generate();
152 auto duplicate = spawn<subset::SubsetActor>(
153 caf::actor_cast<caf::actor>(playlist_), base_.name(), uuid);
154 anon_mail(playhead::playhead_rate_atom_v, base_.playhead_rate()).send(duplicate);
155
156
157 mail(json_store::get_json_atom_v)
158 .request(jsn_handler_.json_actor(), infinite)
159 .then(
160 [=](const utility::JsonStore &meta) mutable {
161 anon_mail(json_store::set_json_atom_v, meta).send(duplicate);
162
163 // maybe not be safe.. as ordering isn't implicit..
164 std::vector<UuidActor> media_actors;
165 for (const auto &i : base_.media())
166 media_actors.emplace_back(UuidActor(i, actors_[i]));
167
168 mail(playlist::add_media_atom_v, media_actors, Uuid())
169 .request(duplicate, infinite)
170 .then(
171 [=](const bool meta) mutable {
172 duplicate_children(duplicate);
173 rp.deliver(UuidActor(uuid, duplicate));
174 },
175 [=](caf::error &err) mutable { rp.deliver(err); });
176 },
177 [=](caf::error &err) mutable { rp.deliver(err); });
178
179 return rp;
180 },
181
182 [=](playhead::playhead_rate_atom) -> FrameRate { return base_.playhead_rate(); },
183

Callers

nothing calls this directly

Calls 15

UuidClass · 0.85
map_value_to_vecFunction · 0.85
requestMethod · 0.80
json_actorMethod · 0.80
deliverMethod · 0.80
send_changedMethod · 0.80
actorMethod · 0.80
atMethod · 0.80
whatMethod · 0.80
event_groupMethod · 0.80
push_backMethod · 0.80
UuidActorClass · 0.50

Tested by

no test coverage detected