blob: 1c0c87e01c888fda3105f64c124744fd7719de81 [file] [log] [blame]
//----------------------------------------------------------------------------
//
// Copyright (C) Intel Corporation, 2003 - 2007.
// (C) Red Hat, Inc, 2015
//
// File: WsmanClient.h
//
// Contents: A WS-MAN client interface
//
//----------------------------------------------------------------------------
#ifndef __WSMAN_CLIENT_INTERFACE
#define __WSMAN_CLIENT_INTERFACE
#include <string>
#include <vector>
#include <map>
#include "Exception.h"
#include "WsmanFilter.h"
#include "WsmanOptions.h"
using namespace std;
using namespace WsmanExceptionNamespace;
namespace WsmanClientNamespace
{
// WS-MAN Client exceptions
// Exception thrown when server error occurs
class WsmanClientException : public GeneralWsmanException
{
public:
WsmanClientException(const char* message,
unsigned int err = WSMAN_GENERAL_ERROR)
:GeneralWsmanException(message, err){}
virtual ~WsmanClientException() throw() {}
};
// Exception thrown if the server returned a soap fault
class WsmanSoapFault : public WsmanClientException
{
private:
string soapCodeValue;
string soapSubcodeValue;
string soapReason;
string soapDetail;
public:
WsmanSoapFault(const char* message,
const string &faultCode = string(),
const string &faultSubcode = string(),
const string &faultReason = string(),
const string &faultDetail = string())
:WsmanClientException(message, WSMAN_SOAP_FAULT)
{
SetWsmanFaultFields(faultCode, faultSubcode, faultReason, faultDetail);
}
virtual ~WsmanSoapFault() throw() {}
void SetWsmanFaultFields(const string& faultCode,
const string& faultSubcode,
const string& faultReason,
const string& faultDetail) throw()
{
soapCodeValue = faultCode;
soapSubcodeValue = faultSubcode;
soapReason = faultReason;
soapDetail = faultDetail;
}
string GetFaultCode() const throw() {return soapCodeValue;}
string GetFaultSubcode() const throw() {return soapSubcodeValue;}
string GetFaultReason() const throw() {return soapReason;}
string GetFaultDetail() const throw() {return soapDetail;}
};
// Exception throw if a resource is not found
class WsmanResourceNotFound : public WsmanClientException
{
public:
WsmanResourceNotFound(const char *message)
: WsmanClientException(message, WSMAN_RESOURCE_NOT_FOUND)
{
}
virtual ~WsmanResourceNotFound() throw() {}
};
typedef enum {
WSMAN_DELIVERY_PUSH = 0,
WSMAN_DELIVERY_PUSHWITHACK,
WSMAN_DELIVERY_EVENTS,
WSMAN_DELIVERY_PULL
}NotificationDeliveryMode;
typedef struct __SubscribeInfo{
string filter;
string dialect;
string delivery_uri;
string refenceParam;
NotificationDeliveryMode delivery_mode;
NameValuePairs *selectorset;
float heartbeat_interval;
float expires;
}SubscribeInfo;
// Wsman Client Interface class
class WsmanClient
{
public:
// Destructor.
virtual ~WsmanClient(){}
// Identify
virtual string Identify() const = 0;
// Creates a new instance of a resource.
virtual string Create(
const string &resourceUri,
const string &xmlData) const = 0;
// Delete a resource.
virtual void Delete(
const string &resourceUri,
const NameValuePairs *s = NULL) const = 0;
// Enumerate a resource.
virtual void Enumerate(
const string &resourceUri,
vector<string> &enumRes,
const NameValuePairs *s = NULL) const = 0;
virtual void Enumerate(
const string &resourceUri,
WsmanFilter & filter,
vector<string> &enumRes) const = 0;
virtual void Enumerate(
const string &resourceUri,
vector<string> &enumRes,
const WsmanOptions &options,
const WsmanFilter &filter = WsmanFilter()) const = 0;
// Retrieve a resource.
virtual string Get(
const string &resourceUri,
const WsmanOptions &options) const = 0;
virtual string Get(
const string &resourceUri,
const NameValuePairs *s = NULL) const = 0;
// Update a resource.
virtual string Put(
const string &resourceUri,
const string &content,
const NameValuePairs *s = NULL) const = 0;
// Invokes a method and returns the results of the method call.
virtual string Invoke(
const string &resourceUri,
const string &methodName,
const WsmanOptions &options) const = 0;
virtual string Invoke(
const string &resourceUri,
const string &methodName,
const string &content,
const WsmanOptions &options) const = 0;
virtual string Invoke(
const string &resourceUri,
const string &methodName,
const string &content,
const NameValuePairs *s = NULL) const = 0;
// Submit a subscription
virtual string Subscribe(
const string &resourceUri,
const SubscribeInfo &info,
string &subsContext) const = 0;
// Renew a subscription
virtual string Renew(
const string &resourceUri,
const string &subsContext,
float expire,
const NameValuePairs *s = NULL) const = 0;
// Terminate a subscription
virtual void Unsubscribe(
const string &resourceUri,
const string &subsContext,
const NameValuePairs *s = NULL) const = 0;
};
} // namespace WsmanClientNamespace
#endif