|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: ulsmeet.h
// Content: This file contains the MeetingPlace object definition.
// History:
// Mon 11-Nov-96 -by- Shishir Pardikar [shishirp]
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#ifndef _ULSMEET_H_
#define _ULSMEET_H_
#ifdef ENABLE_MEETING_PLACE
#include "connpt.h"
#include "attribs.h"
#include "culs.h"
class CIlsMeetingPlace: public IIlsMeetingPlace, public IConnectionPointContainer { #define UNDEFINED_TYPE -1
#define ILS_MEET_FLAG_REGISTERED 0x00000001
#define ILS_MEET_MODIFIED_MASK 0xffff0000
#define ILS_MEET_FLAG_HOST_NAME_MODIFIED 0x00010000
#define ILS_MEET_FLAG_HOST_ADDRESS_MODIFIED 0x00020000
#define ILS_MEET_FLAG_DESCRIPTION_MODIFIED 0x00040000
#define ILS_MEET_FLAG_EXTENDED_ATTRIBUTES_MODIFIED 0x00080000
#define ILS_MEET_ALL_MODIFIED ILS_MEET_MODIFIED_MASK
private:
LONG m_cRef; // ref count on this object
// members to keep track of properties
ULONG m_ulState; // the current state of this object
// as defined by ULSState enum type
LPTSTR m_pszMeetingPlaceID; // globally unique ID for the MeetingPlace
LONG m_lMeetingPlaceType; // meetingtype, eg: netmeeting, doom etc.
LONG m_lAttendeeType; // type of Attendees, eg: urls, rtperson DNs etc.
LPTSTR m_pszHostName; // Host who registered this MeetingPlace
LPTSTR m_pszHostIPAddress; // IP address of the host
LPTSTR m_pszDescription; // description eg: discussing ski trip
CAttributes m_ExtendedAttrs; // User defined attributes
HANDLE m_hMeetingPlace; // handle from ulsldap_register
CConnectionPoint *m_pConnectionPoint;
// bookkeeping
DWORD m_dwFlags; // Always a good idea
// server object
CIlsServer *m_pIlsServer;
STDMETHODIMP AllocMeetInfo(PLDAP_MEETINFO *ppMeetInfo, ULONG ulMask);
public:
// Constructor
CIlsMeetingPlace();
// destructor
~CIlsMeetingPlace(VOID);
STDMETHODIMP Init(BSTR bstrMeetingPlaceID, LONG lMeetingPlaceType, LONG lAttendeeType); STDMETHODIMP Init(CIlsServer *pIlsServer, PLDAP_MEETINFO pMeetInfo);
STDMETHODIMP NotifySink(VOID *pv, CONN_NOTIFYPROC pfn);
STDMETHODIMP RegisterResult(ULONG ulRegID, HRESULT hr); STDMETHODIMP UnregisterResult(ULONG ulRegID, HRESULT hr); STDMETHODIMP UpdateResult(ULONG ulUpdateID, HRESULT hr); STDMETHODIMP AddAttendeeResult(ULONG ulID, HRESULT hr); STDMETHODIMP RemoveAttendeeResult(ULONG ulID, HRESULT hr); STDMETHODIMP EnumAttendeeNamesResult(ULONG ulEnumAttendees, PLDAP_ENUM ple);
// IUnknown members
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IIlsMeetingPlace Interface members
// Interfaces related to attributes
// all these operate locally on the object and generate
// no net traffic.
// Get the type of meeting and Attendee
// these are not changeable once the
// meeting is registered
STDMETHODIMP GetState(ULONG *ulState);
STDMETHODIMP GetMeetingPlaceType(LONG *plMeetingPlaceType); STDMETHODIMP GetAttendeeType(LONG *plAttendeeType);
STDMETHODIMP GetStandardAttribute( ILS_STD_ATTR_NAME stdAttr, BSTR *pbstrStdAttr);
STDMETHODIMP SetStandardAttribute( ILS_STD_ATTR_NAME stdAttr, BSTR pbstrStdAttr);
STDMETHODIMP GetExtendedAttribute ( BSTR bstrName, BSTR *pbstrValue ); STDMETHODIMP SetExtendedAttribute ( BSTR bstrName, BSTR bstrValue ); STDMETHODIMP RemoveExtendedAttribute ( BSTR bstrName ); STDMETHODIMP GetAllExtendedAttributes ( IIlsAttributes **ppAttributes );
// Registers a meeting with the server
STDMETHODIMP Register ( IIlsServer *pServer, ULONG *pulRegID );
// The following 5 interfaces work only on an object that has been
// a) used to register a meeting
// or b) obtained from IIls::EnumMeetingPlaces
STDMETHODIMP Unregister(ULONG *pulUnregID);
STDMETHODIMP Update(ULONG *pulUpdateID);
STDMETHODIMP AddAttendee(BSTR bstrAttendeeID, ULONG *pulAddAttendeeID); STDMETHODIMP RemoveAttendee(BSTR bstrAttendeeID, ULONG *pulRemoveAttendeeID);
STDMETHODIMP EnumAttendeeNames(IIlsFilter *pFilter, ULONG *pulEnumAttendees);
// Connection point container. It has only one
// connection interface, and that is to notify
// IConnectionPointContainer
STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum); STDMETHODIMP FindConnectionPoint(REFIID riid, IConnectionPoint **ppcp); };
//****************************************************************************
// CEnumMeetingPlaces definition
//****************************************************************************
//
class CEnumMeetingPlaces : public IEnumIlsMeetingPlaces { private: LONG m_cRef; CIlsMeetingPlace **m_ppMeetingPlaces; ULONG m_cMeetingPlaces; ULONG m_iNext;
public: // Constructor and Initialization
CEnumMeetingPlaces (void); ~CEnumMeetingPlaces (void); STDMETHODIMP Init (CIlsMeetingPlace **ppMeetingPlacesList, ULONG cMeetingPlaces);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IEnumIlsMeetingPlaces
STDMETHODIMP Next(ULONG cMeetingPlaces, IIlsMeetingPlace **rgpMeetingPlaces, ULONG *pcFetched); STDMETHODIMP Skip(ULONG cMeetingPlaces); STDMETHODIMP Reset(); STDMETHODIMP Clone(IEnumIlsMeetingPlaces **ppEnum); };
#endif // ENABLE_MEETING_PLACE
#endif //
|