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

Diff for /pegasus/src/Pegasus/Common/AsyncOpNode.cpp between version 1.20 and 1.40

version 1.20, 2002/04/24 20:24:57 version 1.40, 2005/02/06 21:13:14
Line 1 
Line 1 
 //%//////////////////////////////////////////////////////////////////////////  //%2005////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
   // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 22 
Line 29 
 // //
 // Author: Mike Day (mdday@us.ibm.com) // Author: Mike Day (mdday@us.ibm.com)
 // //
 // Modified By:  // Modified By:  Amit K Arora, IBM (amita@in.ibm.com) for Bug#1188
   //               David Dillard, VERITAS Software Corp.
   //                   (david.dillard@veritas.com)
   //               Sean Keenan (sean.keenan@hp.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include <Pegasus/Common/AsyncOpNode.h> #include <Pegasus/Common/AsyncOpNode.h>
   #include <Pegasus/Common/InternalException.h>
  
 PEGASUS_NAMESPACE_BEGIN  #if defined(PEGASUS_OS_VMS)
   #include <stdio.h>
 AsyncOpNode * AsyncOpNode::_headOfFreeList;  #endif
 const int AsyncOpNode::BLOCK_SIZE = 200;  
 Mutex AsyncOpNode::_alloc_mut;  
   
 void * AsyncOpNode::operator new(size_t size)  
 {  
    if(size != sizeof(AsyncOpNode))  
       return :: operator new(size);  
  
    _alloc_mut.lock(pegasus_thread_self());  PEGASUS_NAMESPACE_BEGIN
  
    AsyncOpNode *node = _headOfFreeList;  #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
    if(node)  #define snprintf _snprintf
       _headOfFreeList = node->_parent;  #endif
    else  
    {  // AsyncOpNode * AsyncOpNode::_headOfFreeList;
       AsyncOpNode * newBlock =  // const int AsyncOpNode::BLOCK_SIZE = 200;
          static_cast<AsyncOpNode *>(::operator new( BLOCK_SIZE * sizeof(AsyncOpNode)));  // Mutex AsyncOpNode::_alloc_mut;
       int i;  
       for( i = 1; i < BLOCK_SIZE - 1; ++i)  // void * AsyncOpNode::operator new(size_t size)
          newBlock[i]._parent = &newBlock[i + 1];  // {
       newBlock[BLOCK_SIZE - 1]._parent = NULL;  //    if(size != sizeof(AsyncOpNode))
       node = newBlock;  //       return :: operator new(size);
       _headOfFreeList = &newBlock[1];  
    }  //    _alloc_mut.lock(pegasus_thread_self());
    _alloc_mut.unlock();  
    return node;  //    AsyncOpNode *node = _headOfFreeList;
 }  //    if(node)
   //       _headOfFreeList = node->_parent;
 void AsyncOpNode::operator delete(void *dead, size_t size)  //    else
 {  //    {
   //       AsyncOpNode * newBlock =
    if(dead == 0)  //       reinterpret_cast<AsyncOpNode *>(::operator new( BLOCK_SIZE * sizeof(AsyncOpNode)));
       return;  //       int i;
    if(size != sizeof(AsyncOpNode))  //       for( i = 1; i < BLOCK_SIZE - 1; ++i)
    {  //       newBlock[i]._parent = &newBlock[i + 1];
       ::operator delete(dead);  //       newBlock[BLOCK_SIZE - 1]._parent = NULL;
       return;  //       node = newBlock;
    }  //       _headOfFreeList = &newBlock[1];
    AsyncOpNode *node = static_cast<AsyncOpNode *>(dead);  //    }
    _alloc_mut.lock(pegasus_thread_self());  //    _alloc_mut.unlock();
    node->_parent = _headOfFreeList;  //    return node;
    _headOfFreeList = node;  // }
    _alloc_mut.unlock();  
 }  // void AsyncOpNode::operator delete(void *dead, size_t size)
   // {
   
   //    if(dead == 0)
   //       return;
   //    if(size != sizeof(AsyncOpNode))
   //    {
   //       ::operator delete(dead);
   //       return;
   //    }
   //    AsyncOpNode *node = reinterpret_cast<AsyncOpNode *>(dead);
   //    _alloc_mut.lock(pegasus_thread_self());
   //    node->_parent = _headOfFreeList;
   //    _headOfFreeList = node;
   //    _alloc_mut.unlock();
   // }
  
  
 AsyncOpNode::AsyncOpNode(void) AsyncOpNode::AsyncOpNode(void)
Line 112 
Line 131 
    _request.empty_list();    _request.empty_list();
    _response.empty_list();    _response.empty_list();
  
    _operation_list.reset();     //_operation_list.reset();
    _state = 0;    _state = 0;
    _flags = 0;    _flags = 0;
    _offered_count = 0;    _offered_count = 0;
Line 138 
Line 157 
    return;    return;
 } }
  
   void AsyncOpNode::print_to_buffer(char **buf)
   {
      if(buf == NULL)
         return;
   
   #if !defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM)
      char work_buf[512];
      snprintf(work_buf, sizeof(work_buf), "AsyncOpNode %p\n" \
               "\trq %d; rp %d; state %d; flags %d; op_dst q %p\n" \
               "\tcallback node %p; callback rp q %p; callback ptr %p\n" \
               "\tcallback parm %p; callback handle %p; callback notify %p\n" \
               "\tcallback rq q %p; service %p; thread %p\n\n",
               this, _request.count(), _response.count(),
               _state, _flags, _op_dest, _callback_node, _callback_response_q,
               _callback_ptr, _callback_parameter, _callback_handle, _callback_notify,
               _callback_request_q, _service_ptr, _thread_ptr);
      *buf = strdup(work_buf);
   #endif
      return;
   
   }
   
   String AsyncOpNode::print_to_string(void)
   {
      char work_buf[512];
   #if !defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM)
      snprintf(work_buf, sizeof(work_buf), "AsyncOpNode %p\n" \
               "\trq %d; rp %d; state %d; flags %d; op_dst q %p\n" \
               "\tcallback node %p; callback rp q %p; callback ptr %p\n" \
               "\tcallback parm %p; callback handle %p; callback notify %p\n" \
               "\tcallback rq q %p; service %p; thread %p\n\n",
               this, _request.count(), _response.count(),
               _state, _flags, _op_dest, _callback_node, _callback_response_q,
               _callback_ptr, _callback_parameter, _callback_handle, _callback_notify,
               _callback_request_q, _service_ptr, _thread_ptr);
   #else
      work_buf[0] = '\0';
   #endif
   
      return String(work_buf);
   }
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.20  
changed lines
  Added in v.1.40

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2