Changeset 6459 for trunk/licq

Show
Ignore:
Timestamp:
07/24/08 01:02:45 (4 months ago)
Author:
flynd
Message:

Marked mutexes as mutable so it's possible to use a const pointer to a fetched ICQUser.

Location:
trunk/licq
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/licq/include/licq_user.h

    r6438 r6459  
    917917 
    918918  virtual bool User()  { return true; } 
    919   void Lock(unsigned short); 
    920   void Unlock(); 
     919  void Lock(unsigned short lockType) const; 
     920  void Unlock() const; 
    921921 
    922922  // Deprecated functions, to be removed 
     
    10911091  static unsigned short s_nNumUserEvents; 
    10921092 
    1093   pthread_rdwr_t mutex_rw; 
    1094   unsigned short m_nLockType; 
     1093  mutable pthread_rdwr_t myMutex; 
     1094  mutable unsigned short myLockType; 
    10951095  static pthread_mutex_t mutex_nNumUserEvents; 
    10961096 
     
    12371237   * @param lockType Type of lock (LOCK_R or LOCK_W) 
    12381238   */ 
    1239   void Lock(unsigned short lockType); 
     1239  void Lock(unsigned short lockType) const; 
    12401240 
    12411241  /** 
    12421242   * Release current lock for group 
    12431243   */ 
    1244   void Unlock(); 
     1244  void Unlock() const; 
    12451245 
    12461246private: 
     
    12501250  unsigned short myIcqGroupId; 
    12511251 
    1252   pthread_rdwr_t myMutex; 
    1253   unsigned short myLockType; 
     1252  mutable pthread_rdwr_t myMutex; 
     1253  mutable unsigned short myLockType; 
    12541254}; 
    12551255 
     
    12811281   * Release owner lock 
    12821282   */ 
    1283   void DropOwner(ICQOwner* owner); 
     1283  void DropOwner(const ICQOwner* owner); 
    12841284 
    12851285  bool IsOnList(const char *, unsigned long); 
     
    12961296  // ICQ Protocol only (from original Licq) 
    12971297  void AddUser(ICQUser *); 
    1298   void DropUser(ICQUser *); 
     1298  void DropUser(const ICQUser* user); 
    12991299 
    13001300  // Deprecated user functions, to be removed 
     
    13641364   * @param group The group to unlock 
    13651365   */ 
    1366   void DropGroup(LicqGroup* group); 
     1366  void DropGroup(const LicqGroup* group); 
    13671367 
    13681368  /** 
  • trunk/licq/src/user.cpp

    r6438 r6459  
    448448 * ICQUser::Lock 
    449449 *-------------------------------------------------------------------------*/ 
    450 void ICQUser::Lock(unsigned short _nLockType) 
    451 { 
    452   switch (_nLockType) 
    453   { 
    454   case LOCK_R: 
    455     pthread_rdwr_rlock_np (&mutex_rw); 
    456     break; 
    457   case LOCK_W: 
    458     pthread_rdwr_wlock_np(&mutex_rw); 
    459     break; 
    460   default: 
    461     assert(false); 
    462     return; 
    463   } 
    464   m_nLockType = _nLockType; 
     450void ICQUser::Lock(unsigned short lockType) const 
     451{ 
     452  switch (lockType) 
     453  { 
     454    case LOCK_R: 
     455      pthread_rdwr_rlock_np(&myMutex); 
     456      break; 
     457    case LOCK_W: 
     458      pthread_rdwr_wlock_np(&myMutex); 
     459      break; 
     460    default: 
     461      assert(false); 
     462      return; 
     463  } 
     464  myLockType = lockType; 
    465465} 
    466466 
     
    469469 * ICQUser::Unlock 
    470470 *-------------------------------------------------------------------------*/ 
    471 void ICQUser::Unlock() 
    472 { 
    473   unsigned short nLockType = m_nLockType; 
    474   m_nLockType = LOCK_R; 
    475   switch (nLockType) 
    476   { 
    477   case LOCK_R: 
    478     pthread_rdwr_runlock_np(&mutex_rw); 
    479     break; 
    480   case LOCK_W: 
    481     pthread_rdwr_wunlock_np(&mutex_rw); 
    482     break; 
    483   default: 
    484     assert(false); 
    485     break; 
     471void ICQUser::Unlock() const 
     472{ 
     473  unsigned short lockType = myLockType; 
     474  myLockType = LOCK_R; 
     475  switch (lockType) 
     476  { 
     477    case LOCK_R: 
     478      pthread_rdwr_runlock_np(&myMutex); 
     479      break; 
     480    case LOCK_W: 
     481      pthread_rdwr_wunlock_np(&myMutex); 
     482      break; 
     483    default: 
     484      assert(false); 
     485      break; 
    486486  } 
    487487} 
     
    884884} 
    885885 
    886 void CUserManager::DropGroup(LicqGroup* group) 
     886void CUserManager::DropGroup(const LicqGroup* group) 
    887887{ 
    888888  if (group != NULL) 
     
    13231323 * CUserManager::DropUser 
    13241324 *-------------------------------------------------------------------------*/ 
    1325 void CUserManager::DropUser(ICQUser *u) 
     1325void CUserManager::DropUser(const ICQUser* u) 
    13261326{ 
    13271327  if (u == NULL) return; 
     
    13911391} 
    13921392 
    1393 void CUserManager::DropOwner(ICQOwner* owner) 
     1393void CUserManager::DropOwner(const ICQOwner* owner) 
    13941394{ 
    13951395  if (owner == NULL) 
     
    17011701} 
    17021702 
    1703 void LicqGroup::Lock(unsigned short lockType) 
     1703void LicqGroup::Lock(unsigned short lockType) const 
    17041704{ 
    17051705  switch (lockType) 
     
    17181718} 
    17191719 
    1720 void LicqGroup::Unlock() 
     1720void LicqGroup::Unlock() const 
    17211721{ 
    17221722  unsigned short lockType = myLockType; 
     
    22052205*/ 
    22062206 
    2207   pthread_rdwr_destroy_np(&mutex_rw); 
     2207  pthread_rdwr_destroy_np(&myMutex); 
    22082208} 
    22092209 
     
    23702370  m_szClientInfo = NULL; 
    23712371 
    2372   pthread_rdwr_init_np (&mutex_rw, NULL); 
    2373   pthread_rdwr_set_name(&mutex_rw, m_szId); 
     2372  pthread_rdwr_init_np(&myMutex, NULL); 
     2373  pthread_rdwr_set_name(&myMutex, m_szId); 
    23742374} 
    23752375