home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************
- * SVDDE.HXX
- * (c) 1992-1994 STAR DIVISION
- *******************************************************************/
-
- #ifndef _SVDDE_HXX
- #define _SVDDE_HXX
-
- #ifndef _SV_HXX
- #include <sv.hxx>
- #endif
-
- class DdeString;
- class DdeData;
- class DdeConnection;
- class DdeTransaction;
- class DdeLink;
- class DdeRequest;
- class DdeWarmLink;
- class DdeHotLink;
- class DdePoke;
- class DdeExecute;
- class DdeItem;
- class DdeTopic;
- class DdeService;
- class ConvList;
- struct DdeDataImp;
- struct DdeImp;
-
- DECLARE_LIST( DdeConnections, DdeConnection* );
- DECLARE_LIST( DdeTransactions, DdeTransaction* );
- DECLARE_LIST( DdeServices, DdeService* );
- DECLARE_LIST( DdeTopics, DdeTopic* );
- DECLARE_LIST( DdeItems, DdeItem* );
- DECLARE_LIST( DdeFormats, long );
- DECLARE_LIST( StringList, String* );
-
- // -----------
- // - DdeData -
- // -----------
-
- class DdeData
- {
- friend class DdeInternal;
- friend class DdeService;
- friend class DdeConnection;
- friend class DdeTransaction;
- DdeDataImp* pImp;
- void Lock();
-
- public:
- DdeData();
- DdeData( const char*, long, ULONG = FORMAT_STRING );
- DdeData( const String& );
- DdeData( const DdeData& );
- ~DdeData();
-
- operator const char*() const;
- operator long() const;
-
- ULONG GetFormat() const;
-
- DdeData& operator = ( const DdeData& );
- };
-
- // ------------------
- // - DdeServiceList -
- // ------------------
-
- class DdeServiceList
- {
- StringList aServices;
-
- DdeServiceList( const DdeServiceList& );
- int operator= ( const DdeServiceList& );
-
- public:
- DdeServiceList( const String* = NULL );
- ~DdeServiceList();
-
- StringList& GetServices() { return aServices; }
- };
-
- // ----------------
- // - DdeTopicList -
- // ----------------
-
- class DdeTopicList : public LinkHdl
- {
- StringList aTopics;
- void Data( const DdeData* );
-
- public:
- DdeTopicList( const String& );
- ~DdeTopicList();
-
- StringList& GetTopics() { return aTopics; }
- };
-
- // ------------------
- // - DdeTransaction -
- // ------------------
-
- class DdeTransaction : public LinkHdl
- {
- friend class DdeInternal;
- friend class DdeConnection;
-
- DdeTransaction( const DdeTransaction& );
- int operator= ( const DdeTransaction& );
-
- protected:
- DdeConnection& rDde;
- DdeData aDdeData;
- DdeString* pName;
- short nType;
- long nId;
- long nTime;
- Link aData;
- Link aDone;
- BOOL bBusy;
-
- DdeTransaction( DdeConnection&, const String&, long = 0 );
-
- public:
- ~DdeTransaction();
-
- BOOL IsBusy() { return bBusy; }
- const String& GetName();
-
- void Execute();
-
- Link ChangeDataHdl( const Link& );
- Link GetDataHdl() const { return aData; }
-
- virtual void Data( const DdeData* );
-
- Link ChangeDoneHdl( const Link& );
- Link GetDoneHdl() const { return aDone; }
- virtual void Done();
- };
-
- inline Link DdeTransaction::ChangeDataHdl( const Link& rHdl )
- {
- Link aOld = aData;
- aData = rHdl;
- return aOld;
- }
-
- inline Link DdeTransaction::ChangeDoneHdl( const Link& rHdl )
- {
- Link aOld = aDone;
- aDone = rHdl;
- return aOld;
- }
-
- // -----------
- // - DdeLink -
- // -----------
-
- class DdeLink : public DdeTransaction
- {
- Link aNotify;
-
- public:
- DdeLink( DdeConnection&, const String&, long = 0 );
- ~DdeLink();
-
- Link ChangeNotifyHdl( const Link& );
- Link GetNotifyHdl() const { return aNotify; }
- virtual void Notify();
- };
-
- inline Link DdeLink::ChangeNotifyHdl( const Link& rHdl )
- {
- Link aOld = aNotify;
- aNotify = rHdl;
- return aOld;
- }
-
- // ---------------
- // - DdeWarmLink -
- // ---------------
-
- class DdeWarmLink : public DdeLink
- {
- public:
- DdeWarmLink( DdeConnection&, const String&, long = 0 );
- };
-
- // --------------
- // - DdeHotLink -
- // --------------
-
- class DdeHotLink : public DdeLink
- {
- public:
- DdeHotLink( DdeConnection&, const String&, long = 0 );
- };
-
- // --------------
- // - DdeRequest -
- // --------------
-
- class DdeRequest : public DdeTransaction
- {
- public:
- DdeRequest( DdeConnection&, const String&, long = 0 );
- };
-
- // -----------
- // - DdePoke -
- // -----------
-
- class DdePoke : public DdeTransaction
- {
- public:
- DdePoke( DdeConnection&, const String&, const char*, long,
- ULONG = FORMAT_STRING, long = 0 );
- DdePoke( DdeConnection&, const String&, const DdeData&, long = 0 );
- DdePoke( DdeConnection&, const String&, const String&, long = 0 );
- };
-
- // --------------
- // - DdeExecute -
- // --------------
-
- class DdeExecute : public DdeTransaction
- {
- public:
- DdeExecute( DdeConnection&, const String&, long = 0 );
- };
-
- // -----------------
- // - DdeConnection -
- // -----------------
-
- class DdeConnection
- {
- friend class DdeInternal;
- friend class DdeTransaction;
- static DdeConnections* pConnections;
- DdeTransactions aTransactions;
- DdeString* pService;
- DdeString* pTopic;
- DdeImp* pImp;
-
- DdeConnection( const DdeConnection& );
- int operator= ( const DdeConnection& );
-
- public:
- DdeConnection( const String&, const String& );
- ~DdeConnection();
-
- long GetError();
- long GetConvId();
-
- static const DdeConnections& GetConnections() { return *pConnections; }
-
- BOOL IsConnected();
-
- const String& GetServiceName();
- const String& GetTopicName();
- };
-
- // -----------
- // - DdeItem -
- // -----------
-
- class DdeItem
- {
- friend class DdeInternal;
- friend class DdeTopic;
- DdeString* pName;
- short nMonitor;
-
- public:
- DdeItem( const char* );
- DdeItem( const String& );
- DdeItem( const DdeItem& );
- ~DdeItem();
-
- const String& GetName();
- short GetLinks() { return nMonitor; }
- };
-
- // ------------
- // - DdeTopic -
- // ------------
-
- class DdeTopic : public LinkHdl
- {
- friend class DdeInternal;
- friend class DdeService;
- DdeString* pName;
- String aItem;
- DdeItems aItems;
- Link aConnectLink;
- Link aDisconnectLink;
- Link aGetLink;
- Link aPutLink;
- Link aExecLink;
-
- DdeTopic( const DdeTopic& );
- int operator= ( const DdeTopic& );
-
- public:
- DdeTopic( const String& );
- ~DdeTopic();
-
- const String& GetName();
- long GetConvId();
-
- Link ChangeConnectHdl( const Link& );
- Link GetConnectHdl() const { return aConnectLink; }
- virtual void Connect( long );
-
- Link ChangeDisconnectHdl( const Link& );
- Link GetDisconnectHdl() const { return aDisconnectLink; }
- virtual void Disconnect( long );
-
- Link ChangeGetHdl( const Link& );
- Link GetGetHdl() const { return aGetLink; }
- virtual DdeData* Get( ULONG );
-
- Link ChangePutHdl( const Link& );
- Link GetPutHdl() const { return aPutLink; }
- virtual BOOL Put( const DdeData* );
-
- Link ChangeExecuteHdl( const Link& );
- Link GetExecuteHdl() const { return aExecLink; }
- virtual BOOL Execute( const String* );
-
- void NotifyClient( const String& );
- BOOL IsSystemTopic();
-
- void AddItem( const DdeItem& );
- void RemoveItem( const DdeItem& );
- const String& GetCurItem() { return aItem; }
- const DdeItems& GetItems() { return aItems; }
- };
-
- inline Link DdeTopic::ChangeConnectHdl( const Link& rNew )
- {
- Link aOld = aConnectLink;
- aConnectLink = rNew;
- return aOld;
- }
-
- inline Link DdeTopic::ChangeDisconnectHdl( const Link& rNew )
- {
- Link aOld = aDisconnectLink;
- aDisconnectLink = rNew;
- return aOld;
- }
-
- inline Link DdeTopic::ChangeGetHdl( const Link& rNew )
- {
- Link aOld = aGetLink;
- aGetLink = rNew;
- return aOld;
- }
-
- inline Link DdeTopic::ChangePutHdl( const Link& rNew )
- {
- Link aOld = aPutLink;
- aPutLink = rNew;
- return aOld;
- }
-
- inline Link DdeTopic::ChangeExecuteHdl( const Link& rNew )
- {
- Link aOld = aExecLink;
- aExecLink = rNew;
- return aOld;
- }
-
- // --------------
- // - DdeService -
- // --------------
-
- class DdeService
- {
- friend class DdeInternal;
- DdeTopics aTopics;
- DdeFormats aFormats;
- DdeTopic* pSysTopic;
- DdeString* pName;
- ConvList* pConv;
- short nStatus;
-
- BOOL HasCbFormat( short );
- String Topics();
- String Formats();
- String SysItems();
- String Status();
-
- DdeService( const DdeService& );
- int operator= ( const DdeService& );
-
- public:
- DdeService( const String& );
- ~DdeService();
-
- const String& GetName();
- short GetError() { return nStatus; }
-
- static DdeServices& GetServices();
- DdeTopics& GetTopics() { return aTopics; }
-
- void AddTopic( const DdeTopic& );
- void RemoveTopic( const DdeTopic& );
-
- void AddFormat( ULONG );
- void RemoveFormat( ULONG );
- BOOL HasFormat( ULONG );
-
- virtual BOOL IsBusy();
- virtual String GetHelp();
- };
-
- #endif // _SVDDE_HXX
-