diff --git a/streaming/stream_event_handler.hh b/streaming/stream_event_handler.hh index 6b56c48570..594770d460 100644 --- a/streaming/stream_event_handler.hh +++ b/streaming/stream_event_handler.hh @@ -33,7 +33,9 @@ public: * @see StreamEvent.Type * @param event Stream event. */ - virtual void handle_stream_event(stream_event event) = 0; + virtual void handle_stream_event(session_complete_event event) {} + virtual void handle_stream_event(progress_event event) {} + virtual void handle_stream_event(session_prepared_event event) {} }; } // namespace streaming diff --git a/streaming/stream_result_future.cc b/streaming/stream_result_future.cc index 1fd951c0e1..59eae60717 100644 --- a/streaming/stream_result_future.cc +++ b/streaming/stream_result_future.cc @@ -54,4 +54,26 @@ void stream_result_future::init_receiving_side(int session_index, UUID plan_id, sslog.info("[Stream #{}, ID#{}] Received streaming plan for {}", plan_id, session_index, description); } +void stream_result_future::handle_session_prepared(shared_ptr session) { + auto si = session->get_session_info(); + sslog.info("[Stream #{} ID#{}] Prepare completed. Receiving {} files({} bytes), sending {} files({} bytes)", + session->plan_id(), + session->session_index(), + si.get_total_files_to_receive(), + si.get_total_size_to_receive(), + si.get_total_files_to_send(), + si.get_total_size_to_send()); + auto event = session_prepared_event(plan_id, si); + _coordinator->add_session_info(std::move(si)); + fire_stream_event(std::move(event)); +} + +template +void stream_result_future::fire_stream_event(Event event) { + // delegate to listener + for (auto listener : _event_listeners) { + listener->handle_stream_event(std::move(event)); + } +} + } // namespace streaming diff --git a/streaming/stream_result_future.hh b/streaming/stream_result_future.hh index 04f00bd9a6..6c0eb36517 100644 --- a/streaming/stream_result_future.hh +++ b/streaming/stream_result_future.hh @@ -120,21 +120,11 @@ public: { return planId.hashCode(); } +#endif - void handleSessionPrepared(StreamSession session) - { - SessionInfo sessionInfo = session.getSessionInfo(); - logger.info("[Stream #{} ID#{}] Prepare completed. Receiving {} files({} bytes), sending {} files({} bytes)", - session.planId(), - session.sessionIndex(), - sessionInfo.getTotalFilesToReceive(), - sessionInfo.getTotalSizeToReceive(), - sessionInfo.getTotalFilesToSend(), - sessionInfo.getTotalSizeToSend()); - StreamEvent.SessionPreparedEvent event = new StreamEvent.SessionPreparedEvent(planId, sessionInfo); - coordinator.addSessionInfo(sessionInfo); - fireStreamEvent(event); - } + void handle_session_prepared(shared_ptr session); + +#if 0 void handleSessionComplete(StreamSession session) { @@ -150,14 +140,12 @@ public: coordinator.updateProgress(progress); fireStreamEvent(new StreamEvent.ProgressEvent(planId, progress)); } +#endif - synchronized void fireStreamEvent(StreamEvent event) - { - // delegate to listener - for (StreamEventHandler listener : eventListeners) - listener.handleStreamEvent(event); - } + template + void fire_stream_event(Event event); +#if 0 private synchronized void maybeComplete() { if (!coordinator.hasActiveSessions())