summaryrefslogtreecommitdiff
path: root/src/network/network_admin.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-10-17 17:36:59 +0000
committerrubidium <rubidium@openttd.org>2010-10-17 17:36:59 +0000
commit901c4a56bd29b687bee0cd7ffa49e8c9a08b9bf9 (patch)
treeff6991e521b636959751be8fefc7db61d92f7b15 /src/network/network_admin.cpp
parentb4ce7fad7f79f100ef1aae22f9f79aa0b6a7d743 (diff)
downloadopenttd-901c4a56bd29b687bee0cd7ffa49e8c9a08b9bf9.tar.xz
(svn r20968) -Add: date notification of remote admins (dihedral)
Diffstat (limited to 'src/network/network_admin.cpp')
-rw-r--r--src/network/network_admin.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp
index 11b8d8ade..18c4870b4 100644
--- a/src/network/network_admin.cpp
+++ b/src/network/network_admin.cpp
@@ -40,6 +40,7 @@ static const int ADMIN_AUTHORISATION_TIMEOUT = 10000;
/** Frequencies, which may be registered for a certain update type. */
static const AdminUpdateFrequency _admin_update_type_frequencies[] = {
+ ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_DAILY | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY, ///< ADMIN_UPDATE_DATE
};
assert_compile(lengthof(_admin_update_type_frequencies) == ADMIN_UPDATE_END);
@@ -169,6 +170,16 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendShutdown()
return NETWORK_RECV_STATUS_OKAY;
}
+NetworkRecvStatus ServerNetworkAdminSocketHandler::SendDate()
+{
+ Packet *p = new Packet(ADMIN_PACKET_SERVER_DATE);
+
+ p->Send_uint32(_date);
+ this->Send_Packet(p);
+
+ return NETWORK_RECV_STATUS_OKAY;
+}
+
/***********
* Receiving functions
************/
@@ -231,6 +242,11 @@ DEF_ADMIN_RECEIVE_COMMAND(Server, ADMIN_PACKET_ADMIN_POLL)
uint32 d1 = p->Recv_uint32();
switch (type) {
+ case ADMIN_UPDATE_DATE:
+ /* The admin is requesting the current date. */
+ this->SendDate();
+ break;
+
default:
/* An unsupported "poll" update type. */
DEBUG(net, 3, "[admin] Not supported poll %d (%d) from '%s' (%s).", type, d1, this->admin_name, this->admin_version);
@@ -267,6 +283,10 @@ void NetworkAdminUpdate(AdminUpdateFrequency freq)
if (as->update_frequency[i] & freq) {
/* Update the admin for the required details */
switch (i) {
+ case ADMIN_UPDATE_DATE:
+ as->SendDate();
+ break;
+
default: NOT_REACHED();
}
}