(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.23 and 1.24

version 1.23, 2002/06/10 21:43:40 version 1.24, 2002/06/11 21:28:08
Line 226 
Line 226 
        return false;        return false;
     }     }
  
   
     Boolean handled_events = false;     Boolean handled_events = false;
       try { _connection_mutex.try_lock(pegasus_thread_self()); }
       catch(AlreadyLocked){
         pegasus_sleep(1);
         return false;
       }
   
     for (Uint32 i = 0, n = _entries.size(); i < _entries.size(); i++)     for (Uint32 i = 0, n = _entries.size(); i < _entries.size(); i++)
     {     {
         Sint32 socket = _entries[i].socket;         Sint32 socket = _entries[i].socket;
Line 247 
Line 254 
                  MessageQueue & o = static_cast<HTTPConnection *>(q)->get_owner();                  MessageQueue & o = static_cast<HTTPConnection *>(q)->get_owner();
                  Message* message= new CloseConnectionMessage(static_cast<HTTPConnection *>(q)->getSocket());                  Message* message= new CloseConnectionMessage(static_cast<HTTPConnection *>(q)->getSocket());
                  message->dest = o.getQueueId();                  message->dest = o.getQueueId();
                    _connection_mutex.unlock();
   
                  o.enqueue(message);                  o.enqueue(message);
                    return true;
                  i--;                  i--;
                  n = _entries.size();                  n = _entries.size();
               }               }
Line 257 
Line 267 
         if (FD_ISSET(socket, &_rep->active_rd_fd_set))         if (FD_ISSET(socket, &_rep->active_rd_fd_set))
             events |= SocketMessage::READ;             events |= SocketMessage::READ;
  
 //      if (FD_ISSET(socket, &_rep->active_wr_fd_set))  
 //          events |= SocketMessage::WRITE;  
   
         if (FD_ISSET(socket, &_rep->active_ex_fd_set))         if (FD_ISSET(socket, &_rep->active_ex_fd_set))
             events |= SocketMessage::EXCEPTION;             events |= SocketMessage::EXCEPTION;
  
Line 267 
Line 274 
         {         {
             Tracer::trace(TRC_HTTP, Tracer::LEVEL4,             Tracer::trace(TRC_HTTP, Tracer::LEVEL4,
                           "Monitor::run - Socket Event Detected events = %d", events);                           "Monitor::run - Socket Event Detected events = %d", events);
 //          if (events & SocketMessage::WRITE)  
 //          {  
 //             FD_CLR(socket, &_rep->active_wr_fd_set);  
 //             Tracer::trace(TRC_HTTP, Tracer::LEVEL4,  
 //                           "Monitor::run FD_CLR WRITE");  
 //          }  
   
             if (events & SocketMessage::READ)             if (events & SocketMessage::READ)
             {             {
                FD_CLR(socket, &_rep->active_rd_fd_set);                FD_CLR(socket, &_rep->active_rd_fd_set);
Line 291 
Line 291 
             {             {
                Tracer::trace(TRC_HTTP, Tracer::LEVEL4,                Tracer::trace(TRC_HTTP, Tracer::LEVEL4,
                              "Monitor::run lookup for connection entry failed, unsoliciting");                              "Monitor::run lookup for connection entry failed, unsoliciting");
                  _connection_mutex.unlock();
                unsolicitSocketMessages(socket);                unsolicitSocketMessages(socket);
                break;                 return true;
             }             }
  
             if(_async == true && _entries[i]._type == Monitor::CONNECTION)             if(_async == true && _entries[i]._type == Monitor::CONNECTION)
Line 314 
Line 314 
             }             }
             else             else
             {             {
                 _connection_mutex.unlock();
   
                Tracer::trace(TRC_HTTP, Tracer::LEVEL4,                Tracer::trace(TRC_HTTP, Tracer::LEVEL4,
                              "Monitor::run enqueueing to non-connection HTTP class");                              "Monitor::run enqueueing to non-connection HTTP class");
                Message* message = new SocketMessage(socket, events);                Message* message = new SocketMessage(socket, events);
                queue->enqueue(message);                queue->enqueue(message);
                  return true;
   
             }             }
             count--;             count--;
             pegasus_yield();             pegasus_yield();
         }         }
         handled_events = true;         handled_events = true;
     }     }
       _connection_mutex.unlock();
     return(handled_events);     return(handled_events);
 } }
  
Line 372 
Line 376 
  
     // Look for the given entry and remove it:     // Look for the given entry and remove it:
  
       _connection_mutex.lock(pegasus_thread_self());
   
     for (Uint32 i = 0, n = _entries.size(); i < n; i++)     for (Uint32 i = 0, n = _entries.size(); i < n; i++)
     {     {
         if (_entries[i].socket == socket)         if (_entries[i].socket == socket)
Line 384 
Line 390 
             // ATTN-RK-P3-20020521: Need "Socket::close(socket);" here?             // ATTN-RK-P3-20020521: Need "Socket::close(socket);" here?
             Socket::close(socket);             Socket::close(socket);
             PEG_METHOD_EXIT();             PEG_METHOD_EXIT();
               _connection_mutex.unlock();
             return true;             return true;
         }         }
     }     }
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
       _connection_mutex.unlock();
   
     return false;     return false;
 } }
  
 Uint32 Monitor::_findEntry(Sint32 socket) Uint32 Monitor::_findEntry(Sint32 socket)
 { {
     _connection_mutex.lock(pegasus_thread_self());
   
    for (Uint32 i = 0, n = _entries.size(); i < n; i++)    for (Uint32 i = 0, n = _entries.size(); i < n; i++)
     {     {
         if (_entries[i].socket == socket)         if (_entries[i].socket == socket)
             {
               _connection_mutex.unlock();
             return i;             return i;
     }     }
       }
      _connection_mutex.unlock();
     return PEG_NOT_FOUND;     return PEG_NOT_FOUND;
 } }
  


Legend:
Removed from v.1.23  
changed lines
  Added in v.1.24

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2