| 124 | return result; |
| 125 | } |
| 126 | caf::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 |
nothing calls this directly
no test coverage detected