aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2006-05-03 02:56:51 +0000
committerMike Buland <eichlan@xagasoft.com>2006-05-03 02:56:51 +0000
commit33fef4a17290e7872293d8cc173bec826f24001c (patch)
treefc428c53b45fe17d2f1d35c48e9340006b3fd694 /src
parent1587314e55ae761983803aa828addc6854bf4ad4 (diff)
downloadlibbu++-33fef4a17290e7872293d8cc173bec826f24001c.tar.gz
libbu++-33fef4a17290e7872293d8cc173bec826f24001c.tar.bz2
libbu++-33fef4a17290e7872293d8cc173bec826f24001c.tar.xz
libbu++-33fef4a17290e7872293d8cc173bec826f24001c.zip
Added the new singleton class template. Very cool, now I need to switch
all my singletons to using it.
Diffstat (limited to '')
-rw-r--r--src/http.cpp2
-rw-r--r--src/singleton.h46
-rw-r--r--src/test/httpsrv/httpconnectionmonitor.cpp11
3 files changed, 56 insertions, 3 deletions
diff --git a/src/http.cpp b/src/http.cpp
index 11950b7..19122c3 100644
--- a/src/http.cpp
+++ b/src/http.cpp
@@ -146,7 +146,7 @@ bool Http::buildResponse( short nResponseCode, const char *sResponse )
146 time( &curTime ); 146 time( &curTime );
147 gmtime_r( &curTime, &tResTime ); 147 gmtime_r( &curTime, &tResTime );
148 148
149 sServerStr = "YFHttp/0.0.1"; 149 sServerStr = "libbu++ Http/0.0.1";
150 bResPersistant = false; 150 bResPersistant = false;
151 151
152 //char buf[30]; 152 //char buf[30];
diff --git a/src/singleton.h b/src/singleton.h
new file mode 100644
index 0000000..c69e6f1
--- /dev/null
+++ b/src/singleton.h
@@ -0,0 +1,46 @@
1#ifndef SINGLETON_H
2#define SINGLETON_H
3
4#include <stdio.h>
5
6/**
7 * Provides singleton functionality in a modular sort of way. Make this the
8 * base class of any other class and you immediately gain singleton
9 * functionality. Be sure to make your constructor and various functions use
10 * intellegent scoping. Cleanup and instantiation are performed automatically
11 * for you at first use and program exit. There are two things that you must
12 * do when using this template, first is to inherit from it with the name of
13 * your class filling in for T and then make this class a friend of your class.
14 *@code
15 * // Making the Single Singleton:
16 * class Single : public Singleton<Single>
17 * {
18 * friend class Singleton<Single>;
19 * protected:
20 * Single();
21 * ...
22 * };
23 @endcode
24 * You can still add public functions and variables to your new Singleton child
25 * class, but your constructor should be protected (hence the need for the
26 * friend decleration).
27 *@author Mike Buland
28 */
29template <class T>
30class Singleton
31{
32protected:
33 Singleton() {};
34
35private:
36 Singleton( const Singleton& );
37
38public:
39 static T &getInstance()
40 {
41 static T i;
42 return i;
43 }
44};
45
46#endif
diff --git a/src/test/httpsrv/httpconnectionmonitor.cpp b/src/test/httpsrv/httpconnectionmonitor.cpp
index 4eb6817..eaadb36 100644
--- a/src/test/httpsrv/httpconnectionmonitor.cpp
+++ b/src/test/httpsrv/httpconnectionmonitor.cpp
@@ -49,15 +49,22 @@ bool HttpConnectionMonitor::onNewConnection( Connection *pCon )
49 else 49 else
50 { 50 {
51 printf("Non get: %s\n", hp.getRequestTypeStr() ); 51 printf("Non get: %s\n", hp.getRequestTypeStr() );
52 pCon->appendOutput("HTTP/1.1 100 Continue\r\n\r\n");
52 } 53 }
53 pCon->writeOutput(); 54 pCon->writeOutput();
55 //for( int j = 0; j < 50; j++ )
56 {
57 pCon->readInput( 1, 0 );
58 //printf("Size so far: %d\n", pCon->getInputAmnt() );
59 }
54 60
55 if( pCon->hasInput() ) 61 if( pCon->hasInput() )
56 { 62 {
57 std::string s( pCon->getInput(), pCon->getInputAmnt() ); 63 std::string s( pCon->getInput(), pCon->getInputAmnt() );
58 64
59 printf("Reamining data\n==============\n%s\n==============\n", 65 pCon->printInputDebug();
60 s.c_str() ); 66 //printf("Reamining data\n==============\n%s\n==============\n",
67 // s.c_str() );
61 } 68 }
62 69
63 pCon->disconnect(); 70 pCon->disconnect();