(file) Return to Monitor.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Monitor.cpp between version 1.32.2.3 and 1.32.2.4

version 1.32.2.3, 2002/10/29 22:24:47 version 1.32.2.4, 2002/10/30 21:20:05
Line 178 
Line 178 
     struct timeval tv = {0,1};     struct timeval tv = {0,1};
     fd_set fdread;     fd_set fdread;
     FD_ZERO(&fdread);     FD_ZERO(&fdread);
       _entry_mut.lock(pegasus_thread_self());
  
     for( int indx = 0; indx < (int)_entries.size(); indx++)     for( int indx = 0; indx < (int)_entries.size(); indx++)
     {     {
Line 187 
Line 188 
        }        }
     }     }
  
   
     int events = select(FD_SETSIZE, &fdread, NULL, NULL, &tv);     int events = select(FD_SETSIZE, &fdread, NULL, NULL, &tv);
  
 #ifdef PEGASUS_OS_TYPE_WINDOWS #ifdef PEGASUS_OS_TYPE_WINDOWS
Line 210 
Line 212 
                 catch(...)                 catch(...)
                 {                 {
                 }                 }
                   _entry_mut.unlock();
                 return true;                 return true;
              }              }
              try              try
Line 223 
Line 226 
                       MessageQueue & o = static_cast<HTTPConnection *>(q)->get_owner();                       MessageQueue & o = static_cast<HTTPConnection *>(q)->get_owner();
                       Message* message= new CloseConnectionMessage(_entries[indx].socket);                       Message* message= new CloseConnectionMessage(_entries[indx].socket);
                       message->dest = o.getQueueId();                       message->dest = o.getQueueId();
                         _entry_mut.unlock();
                       o.enqueue(message);                       o.enqueue(message);
                       return true;                       return true;
                    }                    }
Line 235 
Line 239 
                    events |= SocketMessage::READ;                    events |= SocketMessage::READ;
                    Message *msg = new SocketMessage(_entries[indx].socket, events);                    Message *msg = new SocketMessage(_entries[indx].socket, events);
                    _entries[indx]._status = _MonitorEntry::BUSY;                    _entries[indx]._status = _MonitorEntry::BUSY;
                      _entry_mut.unlock();
                    q->enqueue(msg);                    q->enqueue(msg);
                    _entries[indx]._status = _MonitorEntry::IDLE;                    _entries[indx]._status = _MonitorEntry::IDLE;
                    return true;                    return true;
Line 247 
Line 252 
           }           }
        }        }
     }     }
       _entry_mut.unlock();
     return(handled_events);     return(handled_events);
 } }
  
Line 261 
Line 267 
    PEG_METHOD_ENTER(TRC_HTTP, "Monitor::solictSocketMessage");    PEG_METHOD_ENTER(TRC_HTTP, "Monitor::solictSocketMessage");
  
    int index = -1;    int index = -1;
      _entry_mut.lock(pegasus_thread_self());
   
    for(index = 0; index < (int)_entries.size(); index++)    for(index = 0; index < (int)_entries.size(); index++)
    {    {
       try       try
       {       {
          if(_entries[index]._status.value() == _MonitorEntry::EMPTY)          if(_entries[index]._status.value() == _MonitorEntry::EMPTY)
          {          {
   
             _entries[index].socket = socket;             _entries[index].socket = socket;
             _entries[index].queueId  = queueId;             _entries[index].queueId  = queueId;
             _entries[index]._type = type;             _entries[index]._type = type;
             _entries[index]._status = _MonitorEntry::IDLE;             _entries[index]._status = _MonitorEntry::IDLE;
               _entry_mut.unlock();
   
             return index;             return index;
          }          }
       }       }
       catch(...)       catch(...)
       {       {
       }       }
   
    }    }
         _entry_mut.unlock();
    PEG_METHOD_EXIT();    PEG_METHOD_EXIT();
    return index;    return index;
 } }
Line 286 
Line 297 
 void Monitor::unsolicitSocketMessages(Sint32 socket) void Monitor::unsolicitSocketMessages(Sint32 socket)
 { {
     PEG_METHOD_ENTER(TRC_HTTP, "Monitor::unsolicitSocketMessages");     PEG_METHOD_ENTER(TRC_HTTP, "Monitor::unsolicitSocketMessages");
       _entry_mut.lock(pegasus_thread_self());
  
     for(int index = 0; index < (int)_entries.size(); index++)     for(int index = 0; index < (int)_entries.size(); index++)
     {     {
        if(_entries[index].socket == socket)        if(_entries[index].socket == socket)
        {        {
           _entries[index]._status = _MonitorEntry::EMPTY;           _entries[index]._status = _MonitorEntry::EMPTY;
             break;
        }        }
     }     }
  
       _entry_mut.unlock();
   
 PEG_METHOD_EXIT(); PEG_METHOD_EXIT();
 if( _async  == true ) if( _async  == true )
    PEGASUS_STD(cout) << "Monitor:: running " << _thread_pool->running_count() <<    PEGASUS_STD(cout) << "Monitor:: running " << _thread_pool->running_count() <<


Legend:
Removed from v.1.32.2.3  
changed lines
  Added in v.1.32.2.4

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2