author | Michael Krelin <hacker@klever.net> | 2007-01-03 00:57:27 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2007-01-03 00:57:27 (UTC) |
commit | f114b9ea0a5cb03d0e9d411090026774d6df44bf (patch) (unidiff) | |
tree | 71bc93466d7789b34c14f3639a515fdcf40c2f2d | |
parent | 555ef5892cba60983f45fea6e6bbb3c3ce2f8532 (diff) | |
download | sitecing-f114b9ea0a5cb03d0e9d411090026774d6df44bf.zip sitecing-f114b9ea0a5cb03d0e9d411090026774d6df44bf.tar.gz sitecing-f114b9ea0a5cb03d0e9d411090026774d6df44bf.tar.bz2 |
added request serial tracking to sitecing_interface
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | include/sitecing/sitecing_interface.h | 6 | ||||
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | src/sitecing-fastcgi.cc | 1 |
4 files changed, 8 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index fde326b..bb1557a 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,13 +1,13 @@ | |||
1 | AC_INIT([sitecing], [0.0.1], [sitecing-bugs@klever.net]) | 1 | AC_INIT([sitecing], [0.0.2], [sitecing-bugs@klever.net]) |
2 | AC_CONFIG_SRCDIR([include/sitecing/sitecing_parser.h]) | 2 | AC_CONFIG_SRCDIR([include/sitecing/sitecing_parser.h]) |
3 | AC_CONFIG_HEADER([config.h]) | 3 | AC_CONFIG_HEADER([config.h]) |
4 | AM_INIT_AUTOMAKE([dist-bzip2]) | 4 | AM_INIT_AUTOMAKE([dist-bzip2]) |
5 | 5 | ||
6 | AC_PROG_INSTALL | 6 | AC_PROG_INSTALL |
7 | AC_PROG_AWK | 7 | AC_PROG_AWK |
8 | AC_PROG_CXX | 8 | AC_PROG_CXX |
9 | AC_PROG_CC | 9 | AC_PROG_CC |
10 | AM_PROG_LEX | 10 | AM_PROG_LEX |
11 | AC_PROG_LIBTOOL | 11 | AC_PROG_LIBTOOL |
12 | 12 | ||
13 | AC_HEADER_STDC | 13 | AC_HEADER_STDC |
diff --git a/include/sitecing/sitecing_interface.h b/include/sitecing/sitecing_interface.h index 0cba2bb..f0210d6 100644 --- a/include/sitecing/sitecing_interface.h +++ b/include/sitecing/sitecing_interface.h | |||
@@ -14,27 +14,31 @@ namespace sitecing { | |||
14 | /** | 14 | /** |
15 | * @brief the interface to site-C-ing. | 15 | * @brief the interface to site-C-ing. |
16 | * | 16 | * |
17 | * The basic class used to convey communications between the component and | 17 | * The basic class used to convey communications between the component and |
18 | * the sitecing core. | 18 | * the sitecing core. |
19 | */ | 19 | */ |
20 | class sitecing_interface { | 20 | class sitecing_interface { |
21 | public: | 21 | public: |
22 | /** | 22 | /** |
23 | * Pointer to the output stream. | 23 | * Pointer to the output stream. |
24 | */ | 24 | */ |
25 | ostream *out; | 25 | ostream *out; |
26 | /** | ||
27 | * Serial number of request being processed. | ||
28 | */ | ||
29 | long serial; | ||
26 | 30 | ||
27 | /** | 31 | /** |
28 | * The default constructor doesn't do much. | 32 | * The default constructor doesn't do much. |
29 | */ | 33 | */ |
30 | sitecing_interface() : out(0) {} | 34 | sitecing_interface() : out(0), serial(0) {} |
31 | /** | 35 | /** |
32 | * The constructor initializes the output stream pointer. | 36 | * The constructor initializes the output stream pointer. |
33 | * @param o the value to initialize the output stream pointer with. | 37 | * @param o the value to initialize the output stream pointer with. |
34 | */ | 38 | */ |
35 | sitecing_interface(ostream* o) : out(o) {} | 39 | sitecing_interface(ostream* o) : out(o) {} |
36 | }; | 40 | }; |
37 | 41 | ||
38 | } | 42 | } |
39 | 43 | ||
40 | #endif /* __SITECING_SITECING_INTERFACE_H */ | 44 | #endif /* __SITECING_SITECING_INTERFACE_H */ |
diff --git a/lib/Makefile.am b/lib/Makefile.am index 53d8182..496177b 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am | |||
@@ -10,13 +10,13 @@ libsitecing_la_SOURCES = \ | |||
10 | sitecing_parser.ll sitecing_enflesher.ll \ | 10 | sitecing_parser.ll sitecing_enflesher.ll \ |
11 | sitecing_interface_cgi.cc \ | 11 | sitecing_interface_cgi.cc \ |
12 | acomponent.cc \ | 12 | acomponent.cc \ |
13 | cgi_component.cc \ | 13 | cgi_component.cc \ |
14 | component_so.cc \ | 14 | component_so.cc \ |
15 | file_factory.cc component_factory.cc \ | 15 | file_factory.cc component_factory.cc \ |
16 | sitespace.cc \ | 16 | sitespace.cc \ |
17 | configuration.cc \ | 17 | configuration.cc \ |
18 | util.cc sitecing_util.cc \ | 18 | util.cc sitecing_util.cc \ |
19 | scoreboard.cc \ | 19 | scoreboard.cc \ |
20 | process_manager.cc | 20 | process_manager.cc |
21 | libsitecing_la_LDFLAGS = \ | 21 | libsitecing_la_LDFLAGS = \ |
22 | -version-info 1:0:0 | 22 | -version-info 2:0:0 |
diff --git a/src/sitecing-fastcgi.cc b/src/sitecing-fastcgi.cc index 57aba60..4768e8f 100644 --- a/src/sitecing-fastcgi.cc +++ b/src/sitecing-fastcgi.cc | |||
@@ -154,24 +154,25 @@ void sitecing_fastcgi_pm::process(int slot) { | |||
154 | semaphore_lock sl; | 154 | semaphore_lock sl; |
155 | if(multi) { | 155 | if(multi) { |
156 | sslot->state = scoreboard_slot::state_idle; | 156 | sslot->state = scoreboard_slot::state_idle; |
157 | sl.sem = &sem; | 157 | sl.sem = &sem; |
158 | sl.lock(); | 158 | sl.lock(); |
159 | } | 159 | } |
160 | sslot->state = scoreboard_slot::state_accept; | 160 | sslot->state = scoreboard_slot::state_accept; |
161 | fcgi_interface fi(fs); | 161 | fcgi_interface fi(fs); |
162 | sslot->state = scoreboard_slot::state_processing; | 162 | sslot->state = scoreboard_slot::state_processing; |
163 | if(multi) | 163 | if(multi) |
164 | sl.unlock(); | 164 | sl.unlock(); |
165 | cgi_gateway gw(fi); | 165 | cgi_gateway gw(fi); |
166 | ++scif.serial; | ||
166 | scif.prepare(&gw); | 167 | scif.prepare(&gw); |
167 | try { | 168 | try { |
168 | component_path = konforka::normalize_path(gw.path_info(),konforka::strip_leading_slash|konforka::strip_trailing_slash); | 169 | component_path = konforka::normalize_path(gw.path_info(),konforka::strip_leading_slash|konforka::strip_trailing_slash); |
169 | string full_component_path; | 170 | string full_component_path; |
170 | string sitecing_path_info; | 171 | string sitecing_path_info; |
171 | while(true) { | 172 | while(true) { |
172 | full_component_path = config.root_source+'/'+component_path; | 173 | full_component_path = config.root_source+'/'+component_path; |
173 | if(!access(full_component_path.c_str(),F_OK)) | 174 | if(!access(full_component_path.c_str(),F_OK)) |
174 | break; | 175 | break; |
175 | string::size_type sl = component_path.rfind('/'); | 176 | string::size_type sl = component_path.rfind('/'); |
176 | if(sl==string::npos) | 177 | if(sl==string::npos) |
177 | throw konforka::exception(CODEPOINT,"can't find the target component"); | 178 | throw konforka::exception(CODEPOINT,"can't find the target component"); |