summaryrefslogtreecommitdiff
path: root/server/src/server.cc
diff options
context:
space:
mode:
authordeva <deva>2009-07-29 18:17:19 +0000
committerdeva <deva>2009-07-29 18:17:19 +0000
commit270d4794655cc0d8beca5c423488d8211605f6cb (patch)
treed10cb3b5ddc8d45e05b468215c26af5772e2ada8 /server/src/server.cc
parentd3b7ad9fed8e98e78a0cb4015c8a6d58a42662bd (diff)
Fixed up the server testprogram a little. Now the program kills its own server process when done.
Diffstat (limited to 'server/src/server.cc')
-rw-r--r--server/src/server.cc30
1 files changed, 26 insertions, 4 deletions
diff --git a/server/src/server.cc b/server/src/server.cc
index 8e5e938..3ddb795 100644
--- a/server/src/server.cc
+++ b/server/src/server.cc
@@ -430,6 +430,9 @@ void server()
#ifdef TEST_SERVER
+#include <sys/types.h>
+#include <signal.h>
+
bool pracro_is_running = true;
char request[] =
@@ -440,27 +443,46 @@ char request[] =
int main()
{
- switch(fork()) {
+ Conf::xml_basedir = "../xml/";
+ Conf::server_port = 32100; // Make sure wo don't interrupt an already running server.
+ pid_t pid = fork();
+
+ switch(pid) {
case -1: // error
+ perror("fork() failed!\n");
return 1;
case 0: // child
- server();
+ try {
+ server();
+ } catch(Exception &e) {
+ printf(e.what());
+ return 1;
+ }
return 0;
default: // parent
- {
+ try {
+ // sleep(1); // Make sure the server is started.
TCPSocket socket;
socket.connect("localhost", Conf::server_port);
socket.write(request);
+
+ // sleep(1); // Make sure the server has handled the request.
char buf[32];
memset(buf, 0, sizeof(buf));
- while(socket.read(buf, 31, 1000)) {
+ // while(socket.read(buf, 31, 1000)) {
+ while(socket.read(buf, 31, 1000000)) {
printf(buf); fflush(stdout);
memset(buf, 0, sizeof(buf));
}
+ } catch(Exception &e) {
+ printf(e.what());
+ kill(pid, SIGKILL); // Kill the server again.
+ return 1;
}
+ kill(pid, SIGKILL); // Kill the server again.
return 0;
}