//---------------------------------------------------------------------------- // // Copyright (C) 2007 Intel Corporation // // File: WRMWsmanClient.h // // Contents: An implementation of the WsmanClient interface using Microsoft WinRM // //---------------------------------------------------------------------------- #ifndef __WRM_WSMAN_CLIENT_H #define __WRM_WSMAN_CLIENT_H #include "WsmanClient.h" #include namespace WsmanClientNamespace { class WRMWsmanClient : public WsmanClient { private: CLSID _wsmanOleClsid; IDispatch * _pWsmanDispatch; IDispatch * _pWsmanSessionDispatch; IDispatch * _pWsmanConnectionOptions; DISPID _dispPropertyPut; DISPID _getDispid; DISPID _putDispid; DISPID _createDispid; DISPID _enumerateDispid; DISPID _invokeDispid; DISPID _deleteDispid; DISPID _createSessionDispid; DISPID _createConnectionOptionsDispid; DISPID _createResourceLocatorDispid; long _connectionFlags; string endpoint; string user; string pwd; bool kerb; bool Init(); void ReleaseDisps(); bool CreateSession(); bool SetConnectionOptions(wchar_t* fieldName, const string& fieldValue); bool AddSessionFlag(wchar_t* flagName); bool CreateConnectionOptions(); bool CreateSessionFlags(); bool GetFunctionIds(); bool GetDispId(IDispatch* disp, DISPID* id, wchar_t* name); bool CreateResourceLocator(IDispatch** disp, const string& uri, const NameValuePairs *s) const; bool GetEnumerationItems(IDispatch* disp, vector &enumRes) const; bool CheckForMoreItems(IDispatch* disp, DISPID& id, bool& hasItems) const; bool AddSelectors(IDispatch* disp, const NameValuePairs *s) const; bool AddSelector(IDispatch* disp, DISPID& selId, const string& name, const string& value) const; // Copy constructor is declared private WRMWsmanClient(const WRMWsmanClient& cl); // operator = is declared private WRMWsmanClient& operator =(const WRMWsmanClient& cl); public: // Construct WRMWsmanClient // Note: The CoInitialize function must be called before calling the constructor WRMWsmanClient(const string& endpoint, const string& username, const string& password, const bool krb = false); // Destructor. virtual ~WRMWsmanClient(); // Identify. virtual string Identify() const {throw exception("Function Not Supported");} /// Creates a new instance of a resource. string Create(const string &resourceUri, const string &data) const; /// Delete a resource. void Delete(const string &resourceUri, const NameValuePairs *s = NULL) const; /// Enumerate resource. void Enumerate(const string &resourceUri, vector &enumRes, const NameValuePairs *s = NULL) const; /// Retrieve a resource. string Get(const string &resourceUri, const NameValuePairs *s = NULL) const; /// Update a resource. string Put(const string &resourceUri, const string &content, const NameValuePairs *s = NULL) const; /// Invokes a method and returns the results of the method call. string Invoke(const string &resourceUri, const string &methodName, const string &content, const NameValuePairs *s = NULL) const; // Submit a subscription string Subscribe(const string &resourceUri, const SubscribeInfo &info, string &identifier) const; // Renew a subscription string Renew(const string &identifier, float expire) const; // Terminate a subscription void Unsubscribe(const string &identifier) const; // Renew a subscription virtual string Renew(const string &resourceUri, const string &identifier, float expire, const NameValuePairs *s = NULL) const {throw exception("Function Not Supported");} // Terminate a subscription virtual void Unsubscribe(const string &resourceUri, const string &identifier, const NameValuePairs *s = NULL) const {throw exception("Function Not Supported");} }; } // namespace WsmanClient #endif