]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/server.cpp
Se arregla el bug que hacia que se cuelgue el cliente al desconectarse.
[z.facultad/75.42/plaqui.git] / Server / src / server.cpp
index 4247d9124297fda8dfbc22326379983da3ae8ee7..340c2f05801dbeebdc216f63a056e851f5413b16 100644 (file)
@@ -29,8 +29,8 @@
 #include "plaqui/server/connection.h"
 #include "plaqui/server/controlserver.h"
 #include <sigc++/class_slot.h>
-// FIXME - sacar sstream (a menos que se necesite)
 #include <sstream>
+#include <exception>
 #ifdef DEBUG
 #      include "plaqui/server/string.h"
 #      include <iostream>
@@ -44,7 +44,8 @@ namespace Server {
 
 Server::~Server(void) {
 #ifdef DEBUG
-       cerr << __FILE__ <<  ": destructor." << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               <<  ": destructor." << endl;
 #endif // DEBUG
        // Termino plantas.
        Glib::Mutex::Lock lock(plants_mutex);
@@ -53,10 +54,11 @@ Server::~Server(void) {
        }
 }
 
-Server::Server(const string& plant_filename, const Connection::Port& port):
-               TCPServer(port) {
+Server::Server(const string& plant_filename, const Connection::Port& port)
+               throw(sockerr): TCPServer(port) {
 #ifdef DEBUG
-       cerr << __FILE__ <<  ": port = " << port << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               <<  ": port = " << port << endl;
 #endif // DEBUG
        // FIXME
        Glib::Mutex::Lock lock(plants_mutex);
@@ -68,10 +70,10 @@ Server::Server(const string& plant_filename, const Connection::Port& port):
        plants["default"]->run();
 }
 
-Connection* Server::new_connection(
-               const sockbuf::sockdesc& sd) {
+Connection* Server::new_connection(const sockbuf::sockdesc& sd) {
 #ifdef DEBUG
-       cerr << __FILE__ <<  ": new_connection(sd = " << sd.sock << ")"
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               <<  ": new_connection(sd = " << sd.sock << ")"
                << endl;
 #endif // DEBUG
        ControlServer* connection = new ControlServer(sd);
@@ -84,15 +86,10 @@ Connection* Server::new_connection(
        return connection;
 }
 
-void Server::on_plant_updated(const Plant* plant) {
-#ifdef DEBUG
-       cerr << __FILE__ << ": on_plant_updated(plant = " << plant << ")." << endl;
-#endif // DEBUG
-}
-
 void Server::on_plant_finished(const char* plant) {
 #ifdef DEBUG
-       cerr << __FILE__ <<  ": on_plant_finished(plant_name = " << plant << endl;
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               <<  ": on_plant_finished(plant_name = " << plant << endl;
 #endif // DEBUG
        Glib::Mutex::Lock lock(plants_mutex);
        plants.erase(plant);
@@ -102,7 +99,8 @@ void Server::on_plant_finished(const char* plant) {
 void Server::on_control_command_received(const Command& command,
                ControlServer* controlserver) {
 #ifdef DEBUG
-       cerr << __FILE__ <<  ": on_control_command_received(target = "
+       cerr << __FILE__ << "(" << __LINE__ << ")"
+               <<  ": on_control_command_received(target = "
                << command.get_target() << ", command = " << command.get_command()
                << ", args = [" << String::join(command.get_args(), ", ") << "])"
                << endl;
@@ -173,7 +171,7 @@ HTTPResponse* Server::cmd_server_status(void) const {
        // FIXME
        stringstream xml;
        xml << "<serverstatus>" << endl;
-       xml << "\t<version>0.9</version>" << endl;
+       xml << "\t<version>" VERSION "</version>" << endl;
        xml << "\t<authors>" << endl;
        xml << "\t\t<author>Nicolás Dimov</author>" << endl;
        xml << "\t\t<author>Leandro Lucarella</author>" << endl;
@@ -313,6 +311,7 @@ HTTPResponse* Server::cmd_plant_get(const Command& command) {
                return new HTTPResponse(HTTPMessage::NOT_FOUND,
                                string("<response desc=\"No existe la planta ") + plant + "\" />");
        }
+       // TODO try/catch?
        string xml = plants[plant]->get_xml();
        if (xml.length()) {
                return new HTTPResponse(HTTPMessage::OK, xml);