Leaked source code of windows server 2003
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.
|
|
/*
Copyright (c) 1998-1999 Microsoft Corporation
Module Name: blbtime.h
Abstract: Definition of the TIME class
Author:
*/
#if !defined(AFX_BLBTIME_H__0CC1F05A_CAEB_11D0_8D58_00C04FD91AC0__INCLUDED_)
#define AFX_BLBTIME_H__0CC1F05A_CAEB_11D0_8D58_00C04FD91AC0__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "resource.h" // main symbols
#include "sdpblb.h"
#include "blbcoen.h"
/////////////////////////////////////////////////////////////////////////////
// Time
const USHORT MAX_NTP_TIME_STRLEN = 10; const SHORT FIRST_POSSIBLE_YEAR = 1970; const DWORD NTP_OFFSET = 0x83aa7e80;
// return the current Ntp time
inline DWORD_PTR GetCurrentNtpTime( ) { return (time(NULL) + NTP_OFFSET); }
class ATL_NO_VTABLE TIME : public ENUM_ELEMENT<SDP_TIME>, public CComObjectRootEx<CComObjectThreadModel>, public CComDualImpl<ITTime, &IID_ITTime, &LIBID_SDPBLBLib>, public CObjectSafeImpl { friend class MY_COLL_IMPL<TIME>;
public: typedef ITTime ELEM_IF; typedef IEnumTime ENUM_IF; typedef ITTimeCollection COLL_IF; typedef SDP_TIME SDP_TYPE; typedef SDP_TIME_LIST SDP_LIST;
static const IID &ELEM_IF_ID;
public:
inline TIME(); inline ~TIME(); inline HRESULT FinalConstruct(void);
HRESULT Init( IN CSdpConferenceBlob &ConfBlob );
HRESULT Init( IN CSdpConferenceBlob &ConfBlob, IN DWORD StartTime, IN DWORD StopTime );
inline void SuccessInit( IN CSdpConferenceBlob &ConfBlob, IN SDP_TIME &SdpTime );
inline void ClearSdpBlobRefs();
BEGIN_COM_MAP(TIME) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ITTime) COM_INTERFACE_ENTRY(IObjectSafety) COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pFTM) END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(TIME)
DECLARE_GET_CONTROLLING_UNKNOWN()
// ITTime
public: STDMETHOD(get_StopTime)(/*[out, retval]*/ DOUBLE *pTime); STDMETHOD(put_StopTime)(/*[in]*/ DOUBLE Time); STDMETHOD(get_StartTime)(/*[out, retval]*/ DOUBLE *pTime); STDMETHOD(put_StartTime)(/*[in]*/ DOUBLE Time);
protected:
CSdpConferenceBlob * m_ConfBlob; IUnknown * m_pFTM; // pointer to the free threaded marshaler
};
inline TIME::TIME( ) : m_ConfBlob(NULL), m_pFTM(NULL) { }
inline HRESULT TIME::FinalConstruct(void) { HRESULT HResult = CoCreateFreeThreadedMarshaler( GetControllingUnknown(), & m_pFTM );
if ( FAILED(HResult) ) { return HResult; }
return S_OK; }
inline TIME::~TIME() { if ( m_pFTM ) { m_pFTM->Release(); } }
inline void TIME::SuccessInit( IN CSdpConferenceBlob &ConfBlob, IN SDP_TIME &SdpTime ) { m_ConfBlob = &ConfBlob;
// don't free the sdptime instance on destruction
ENUM_ELEMENT<SDP_TIME>::SuccessInit(SdpTime, FALSE); }
inline void TIME::ClearSdpBlobRefs( ) { m_ConfBlob = NULL; }
#endif // !defined(AFX_BLBTIME_H__0CC1F05A_CAEB_11D0_8D58_00C04FD91AC0__INCLUDED_)
|