/[LeafOK_CVS]/innwebd/base_passive.cpp
ViewVC logotype

Diff of /innwebd/base_passive.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.3 by sysadm, Sat Jul 3 13:56:04 2004 UTC Revision 1.4 by sysadm, Sun Jul 4 06:45:23 2004 UTC
# Line 1  Line 1 
1  /*******************************************************/  /*******************************************************/
2  /*                                                     */  /*                                                     */
3  /*  LeafOK Innd                                        */  /*  LeafOK Innbbsd                                     */
4  /*  Copyright (C) LeafOK.com, 2003-2004                */  /*  Copyright (C) LeafOK.com, 2003-2004                */
5  /*                                                     */  /*                                                     */
6  /*  Programmed by Leaf                                 */  /*  Programmed by Leaf                                 */
7  /*  E-mail:leaf@leafok.com  QQ:6049044                 */  /*  E-mail:leaflet@leafok.com  QQ:6049044              */
8  /*                                                     */  /*                                                     */
9  /*  http://bbs.leafok.com                              */  /*  http://bbs.leafok.com                              */
10  /*  http://bbs.leafok.net                              */  /*  http://bbs.leafok.net                              */
# Line 102  int base_passive::work() Line 102  int base_passive::work()
102          if (this->load_priv() != 0)          if (this->load_priv() != 0)
103                  return -1;                  return -1;
104    
105          this->p_ThreadPool = new thread_pool(MAX_CLIENT);          this->SetThreadPool(new thread_pool(MAX_CLIENT));
106          if (this->p_ThreadPool->GetLastError() != 0)          if (this->p_ThreadPool->GetLastError() != 0)
107          {          {
108                  return -1;                  return -1;
109          }          }
110    
         hThreadCurrent = GetCurrentThread();  
   
111          if (this->s_connect(this->w_address,this->w_port) == 0)          if (this->s_connect(this->w_address,this->w_port) == 0)
112          {          {
113                  this->Startup();                  this->Startup();
# Line 129  int base_passive::work() Line 127  int base_passive::work()
127                    
128                          this->running = true;                          this->running = true;
129    
130                          this->GetThreadPool()->SetThreadStatus(hThreadCurrent,thread_pool::S_WAITING);                          this->GetParentThread()->GetThreadPool()->SetThreadStatus(GetCurrentThreadId(),thread_pool::S_WAITING);
131    
132                          namelen = sizeof(sin);                          namelen = sizeof(sin);
133                          if ((p->s = accept(this->s,(LPSOCKADDR)&sin,&namelen)) == INVALID_SOCKET)                          if ((p->s = accept(this->s,(LPSOCKADDR)&sin,&namelen)) == INVALID_SOCKET)
# Line 141  int base_passive::work() Line 139  int base_passive::work()
139                                  return -2;                                  return -2;
140                          }                          }
141    
                         this->GetThreadPool()->SetThreadStatus(hThreadCurrent,thread_pool::S_WORKING);  
   
142                          if (this->IsShutdown())                          if (this->IsShutdown())
143                          {                          {
144                                  break;                                  break;
145                          }                          }
146    
147                            this->GetParentThread()->GetThreadPool()->SetThreadStatus(GetCurrentThreadId(),tread_pool::S_WORKING);
148    
149    
150                          strcpy(p->hostaddr,inet_ntoa(sin.sin_addr));                          strcpy(p->hostaddr,inet_ntoa(sin.sin_addr));
151                          p->port = sin.sin_port;                          p->port = sin.sin_port;
# Line 193  int base_passive::work() Line 191  int base_passive::work()
191                  Sleep(1000*5); // Wait several seconds for all threads to exit                  Sleep(1000*5); // Wait several seconds for all threads to exit
192          }          }
193          this->s_close();          this->s_close();
         delete(this->p_ThreadPool);  
   
194    
195          this->unload_priv();          this->unload_priv();
196    
# Line 204  int base_passive::work() Line 200  int base_passive::work()
200  }  }
201    
202  DWORD base_passive::AcceptThread(LPVOID pParam)  DWORD base_passive::AcceptThread(LPVOID pParam)
         HANDLE hThreadCurrent;  
203  {  {
204          base_passive* p;          base_passive* p;
205    
206          try          try
207          {          {
                 hThreadCurrent = GetCurrentThread();  
208                  p = (base_passive*)pParam;                  p = (base_passive*)pParam;
209                  if (p->GetParentThread()->GetThreadPool()->AddThread(hThreadCurrent, CLOCKS_PER_SEC * 30) != 0)  
210                    p->ulMainThreadId = GetCurrentThreadId();
211    
212                  if (p->GetParentThread()->GetThreadPool()->AddThread(GetCurrentThreadId(), CLOCKS_PER_SEC * 30) != 0)                  if (p->GetParentThread()->GetThreadPool()->AddThread(GetCurrentThreadId(), CLOCKS_PER_SEC * 30) != 0)
213                  {                  {
214                          syslog << logfile::log_head << "Register thread ... Failed" << endl;                          syslog << logfile::log_head << "Register thread ... Failed" << endl;
215                  p->GetParentThread()->GetThreadPool()->SetThreadStatus(hThreadCurrent,thread_pool::S_WORKING);                  }
216                  p->GetParentThread()->GetThreadPool()->SetThreadStatus(GetCurrentThreadId(),thread_pool::S_WORKING);                  p->GetParentThread()->GetThreadPool()->SetThreadStatus(GetCurrentThreadId(),thread_pool::S_WORKING);
217    
218                  if (p->db_env_init() == 0)                  if (p->db_env_init() == 0)
# Line 227  DWORD base_passive::AcceptThread(LPVOID Line 223  DWORD base_passive::AcceptThread(LPVOID
223                  {                  {
224                          syslog << logfile::log_head << "DB_ENV_INIT failed" << endl;                          syslog << logfile::log_head << "DB_ENV_INIT failed" << endl;
225                  }                  }
226                  if (p->GetParentThread()->GetThreadPool()->RemoveThread(hThreadCurrent) != 0)  
227                  if (p->GetParentThread()->GetThreadPool()->RemoveThread(GetCurrentThreadId()) != 0)                  if (p->GetParentThread()->GetThreadPool()->RemoveThread(GetCurrentThreadId()) != 0)
228                  {                  {
229                          syslog << logfile::log_head << "Unregister thread ... Failed" << endl;                          syslog << logfile::log_head << "Unregister thread ... Failed" << endl;


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1