-
-template <typename T>
-class InviteBase
-{
- protected:
- intrusive_list<Invitation, T> invites;
-
- public:
- void ClearInvites();
-
- friend class Invitation;
-};
-
-class CoreExport Invitation : public intrusive_list_node<Invitation, Channel>, public intrusive_list_node<Invitation, LocalUser>
-{
- Invitation(Channel* c, LocalUser* u, time_t timeout) : user(u), chan(c), expiry(timeout) {}
-
- public:
- LocalUser* const user;
- Channel* const chan;
- time_t expiry;
-
- ~Invitation();
- static void Create(Channel* c, LocalUser* u, time_t timeout);
- static Invitation* Find(Channel* c, LocalUser* u, bool check_expired = true);
-};
-
-typedef intrusive_list<Invitation, LocalUser> InviteList;
-
-template<typename T>
-inline void InviteBase<T>::ClearInvites()
-{
- for (typename intrusive_list<Invitation, T>::iterator i = invites.begin(); i != invites.end(); )
- {
- Invitation* inv = *i;
- ++i;
- delete inv;
- }
-}