summaryrefslogtreecommitdiff
path: root/server/src/server_session.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-11-22 10:26:42 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-11-22 10:26:42 +0300
commit7ef827ea95590c3096f7f6255c5d40eb447d4178 (patch)
treefa06fec027849c00f122bbf79a1b45134414a496 /server/src/server_session.cpp
parentf3693316d59943ca30f07dcdb614ffc8ebc30efe (diff)
prootcol:
added download_state change structure (used in download state changes event from server) client-qt: subscription to download state changes events server: basic implementation of download state changes events TODO: use single structure for download_state_changes in messages instead of all separate ones.
Diffstat (limited to 'server/src/server_session.cpp')
-rw-r--r--server/src/server_session.cpp30
1 files changed, 27 insertions, 3 deletions
diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp
index ee15426..0d92341 100644
--- a/server/src/server_session.cpp
+++ b/server/src/server_session.cpp
@@ -478,6 +478,8 @@ bool server_session::handle_command(client_msg *msg)
break;
case CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_START:
{
+ server_msg s_msg;
+ s_msg.set_type(SERVER_MSG_TYPE::SERVER_DOWNLOAD_STATE_CHANGE);
for(auto i : msg->download_start_request())
{
for(auto m : modules->get_downloader_modules())
@@ -492,17 +494,21 @@ bool server_session::handle_command(client_msg *msg)
}
else
{
- //fire_event(SUBSCRIPTION_TYPE::);
- //TODO: fire event
+ auto dsc = s_msg.add_download_state_changes();
+ dsc->set_download_id(i.download_id());
+ dsc->set_state(SUBSCRIPTION_DOWNLOAD_STATE::SDS_STARTED);
}
break;
}
}
}
+ fire_event(SUBSCRIPTION_TYPE::ST_DOWNLOAD_STATE_CHANGE, s_msg);
}
break;
case CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_STOP:
{
+ server_msg s_msg;
+ s_msg.set_type(SERVER_MSG_TYPE::SERVER_DOWNLOAD_STATE_CHANGE);
for(auto i : msg->download_stop_request())
{
for(auto m : modules->get_downloader_modules())
@@ -516,12 +522,15 @@ bool server_session::handle_command(client_msg *msg)
}
else
{
- //TODO: fire event
+ auto dsc = s_msg.add_download_state_changes();
+ dsc->set_download_id(i.download_id());
+ dsc->set_state(SUBSCRIPTION_DOWNLOAD_STATE::SDS_STOPPED);
}
break;
}
}
}
+ fire_event(SUBSCRIPTION_TYPE::ST_DOWNLOAD_STATE_CHANGE, s_msg);
}
break;
case CLIENT_MSG_TYPE::CLIENT_DOWNLOAD_DELETE:
@@ -657,6 +666,21 @@ void server_session::fire_event(SUBSCRIPTION_TYPE type, server_msg &msg)
send_message(&msg);
}
break;
+ case SUBSCRIPTION_TYPE::ST_DOWNLOAD_STATE_CHANGE:
+ {
+ server_msg filtered_message; //use new message to send only events from subscription and filter out all other download state change events
+ filtered_message.set_type(msg.type());
+ for(auto sc : msg.download_state_changes())
+ {
+ auto dsc = std::find((*s)->get_subscription_request().download_state_change().states().begin(), (*s)->get_subscription_request().download_state_change().states().end(), sc.state());
+ if(dsc != (*s)->get_subscription_request().download_state_change().states().end())
+ {
+ auto sc2 = filtered_message.add_download_state_changes();
+ *sc2 = sc;
+ }
+ }
+ send_message(&filtered_message);
+ }
default:
break;
}