Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
3.1 KiB

#ifndef __MCS_ATTACHMENT_H__
#define __MCS_ATTACHMENT_H__
typedef enum
{
USER_ATTACHMENT, // local attachment
CONNECT_ATTACHMENT // remote attachment
}
ATTACHMENT_TYPE;
class CAttachmentList : public CList
{
DEFINE_CLIST(CAttachmentList, CAttachment*)
PUser IterateUser(void);
PConnection IterateConn(void);
BOOL FindUser(PUser pUser) { return Find((CAttachment *) pUser); }
BOOL FindConn(PConnection pConn) { return Find((CAttachment *) pConn); }
BOOL AppendUser(PUser pUser) { return Append((CAttachment *) pUser); }
BOOL AppendConn(PConnection pConn) { return Append((CAttachment *) pConn); }
};
class CAttachmentQueue : public CQueue
{
DEFINE_CQUEUE(CAttachmentQueue, CAttachment*)
PUser IterateUser(void);
PConnection IterateConn(void);
BOOL FindUser(PUser pUser) { return Find((CAttachment *) pUser); }
BOOL FindConn(PConnection pConn) { return Find((CAttachment *) pConn); }
BOOL AppendUser(PUser pUser) { return Append((CAttachment *) pUser); }
BOOL AppendConn(PConnection pConn) { return Append((CAttachment *) pConn); }
};
class CAttachment
{
public:
CAttachment(ATTACHMENT_TYPE eAttmntType) : m_eAttmntType(eAttmntType) { }
// ~CAttachment(void) { }
ATTACHMENT_TYPE GetAttachmentType(void) { return m_eAttmntType; }
BOOL IsUserAttachment(void) { return (USER_ATTACHMENT == m_eAttmntType); }
BOOL IsConnAttachment(void) { return (CONNECT_ATTACHMENT == m_eAttmntType); }
virtual void PlumbDomainIndication(ULONG height_limit) = 0;
virtual void PurgeChannelsIndication(CUidList *, CChannelIDList *) = 0;
virtual void PurgeTokensIndication(PDomain, CTokenIDList *) = 0;
virtual void DisconnectProviderUltimatum(Reason) = 0;
virtual void AttachUserConfirm(Result, UserID uidInitiator) = 0;
virtual void DetachUserIndication(Reason, CUidList *) = 0;
virtual void ChannelJoinConfirm(Result, UserID uidInitiator, ChannelID requested_id, ChannelID) = 0;
virtual void ChannelConveneConfirm(Result, UserID uidInitiator, ChannelID) = 0;
virtual void ChannelDisbandIndication(ChannelID) = 0;
virtual void ChannelAdmitIndication(UserID uidInitiator, ChannelID, CUidList *) = 0;
virtual void ChannelExpelIndication(ChannelID, CUidList *) = 0;
virtual void SendDataIndication(UINT message_type, PDataPacket data_packet) = 0;
virtual void TokenGrabConfirm(Result, UserID uidInitiator, TokenID, TokenStatus) = 0;
virtual void TokenInhibitConfirm(Result, UserID uidInitiator, TokenID, TokenStatus) = 0;
virtual void TokenGiveIndication(PTokenGiveRecord) = 0;
virtual void TokenGiveConfirm(Result, UserID uidInitiator, TokenID, TokenStatus) = 0;
virtual void TokenReleaseConfirm(Result, UserID uidInitiator, TokenID, TokenStatus) = 0;
virtual void TokenPleaseIndication(UserID uidInitiator, TokenID) = 0;
virtual void TokenTestConfirm(UserID uidInitiator, TokenID, TokenStatus) = 0;
virtual void MergeDomainIndication(MergeStatus) = 0;
private:
ATTACHMENT_TYPE m_eAttmntType;
};
#endif // __MCS_ATTACHMENT_H__