#include "soapRemoteDiscoveryBindingProxy.h"
#include "RemoteDiscoveryBinding.nsmap"
#include<string>
#ifdef __linux
#include <uuid/uuid.h>
#include "utils/XString.h"
#endif
using namespace std;
class DisCoveryDeviceInfo
{
private:
XString m_strIP;
XString m_strUUID;
XString m_strDeviceEPAddress;
XString m_strDeviceTypes;
XString m_strDeviceServiceAddresss; //WebServiceURL
XString m_strUserName;
XString m_strPassword;
XString m_strScopes;
XString m_strMetadataVersion;
XString m_strBrand;
XString m_strModel;
XString m_strSerialNumber;
XString m_strFirmwareVersion;
public:
XString m_strGuid;
XString m_strGuidString;
public:
DisCoveryDeviceInfo(void);
~DisCoveryDeviceInfo(void);
public:
void SetDeviceIP(XString arg_strIP);
void SetDeviceUUID(XString arg_strUUID);
void SetDeviceTypes(XString arg_strTypes);
void SetDeviceEPAddress(XString arg_strEPAddress);
void SetWebServiceURL(XString arg_strWebSrvUrl);
void SetUserName(XString arg_strUserName);
void SetPassword(XString arg_strPassword);
void SetScopes(XString arg_strScopes);
void SetMetadataVersion(XString arg_strMetaVersion);
void SetBrand(XString arg_strBrand);
void SetModel(XString arg_strModel);
void SetSN(XString arg_strSerialNumber);
void SetFirmwareVersion(XString arg_strFirmwareVersion);
const char* GetDeviceIP(void);
const char* GetDeviceUUID(void);
const char* GetDeviceTypes(void);
const char* GetDeviceEPAddress(void);
const char* GetWebServiceURL(void);
const char* GetUserName(void);
const char* GetPassword(void);
void GetScopes(std::vector<std::string> &vecScopes);
const char* GetMetadataVersion(void);
const char* GetBrand(void);
const char* GetModel(void);
const char* GetSN(void);
const char* GetFirmwareVersion(void);
};
class DisCoveryManager
{
private:
std::vector<DisCoveryDeviceInfo> m_vecDiscoveryDevs;
public:
DisCoveryManager() {};
~DisCoveryManager() {};
int DoDiscovery();
int Size(){return m_vecDiscoveryDevs.size();}
DisCoveryDeviceInfo GetAt(int idx);
};
DisCoveryDeviceInfo::DisCoveryDeviceInfo(void)
{
m_strIP = "";
m_strUUID = "";
m_strDeviceEPAddress = "";
m_strDeviceTypes = "";
m_strDeviceServiceAddresss = "";
m_strUserName = "";
m_strPassword = "";
m_strScopes = "";
m_strMetadataVersion = "";
m_strBrand = "";
m_strModel = "";
m_strSerialNumber = "";
m_strFirmwareVersion = "";
}
DisCoveryDeviceInfo::~DisCoveryDeviceInfo(void)
{
m_strIP = "";
m_strUUID = "";
m_strDeviceEPAddress = "";
m_strDeviceTypes = "";
m_strDeviceServiceAddresss = "";
m_strUserName = "";
m_strPassword = "";
m_strScopes = "";
m_strMetadataVersion = "";
m_strBrand = "";
m_strModel = "";
m_strSerialNumber = "";
m_strFirmwareVersion = "";
}
void DisCoveryDeviceInfo::SetDeviceIP(XString arg_strIP)
{
m_strIP = arg_strIP;
}
void DisCoveryDeviceInfo::SetDeviceUUID(XString arg_strUUID)
{
m_strUUID = arg_strUUID;
}
void DisCoveryDeviceInfo::SetDeviceTypes(XString arg_strTypes)
{
m_strDeviceTypes = arg_strTypes;
}
void DisCoveryDeviceInfo::SetDeviceEPAddress(XString arg_strEPAddress)
{
m_strDeviceEPAddress = arg_strEPAddress;
SetDeviceUUID(m_strDeviceEPAddress.Right(36));
}
void DisCoveryDeviceInfo::SetWebServiceURL(XString arg_strWebSrvUrl)
{
m_strDeviceServiceAddresss = arg_strWebSrvUrl;
int nCount, nPos;
XString t_strNetAddr;
t_strNetAddr = m_strDeviceServiceAddresss.Right(m_strDeviceServiceAddresss.GetLength() - 7);
nPos = t_strNetAddr.Find('//');
t_strNetAddr = t_strNetAddr.Left(nPos);
nCount = t_strNetAddr.GetLength();
nPos = t_strNetAddr.Find(':');
if (nPos > 0)
{
nCount = nPos;
}
SetDeviceIP(m_strDeviceServiceAddresss.Mid(7, nCount));
}
void DisCoveryDeviceInfo::SetUserName(XString arg_strUserName)
{
m_strUserName = arg_strUserName;
}
void DisCoveryDeviceInfo::SetPassword(XString arg_strPassword)
{
m_strPassword = arg_strPassword;
}
void DisCoveryDeviceInfo::SetScopes(XString arg_strScopes)
{
m_strScopes = arg_strScopes;
}
void DisCoveryDeviceInfo::SetMetadataVersion(XString arg_strMetaVersion)
{
m_strMetadataVersion = m_strMetadataVersion;
}
void DisCoveryDeviceInfo::SetBrand(XString arg_strBrand)
{
m_strBrand = arg_strBrand;
}
void DisCoveryDeviceInfo::SetModel(XString arg_strModel)
{
m_strModel = arg_strModel;
}
void DisCoveryDeviceInfo::SetSN(XString arg_strSerialNumber)
{
m_strSerialNumber = arg_strSerialNumber;
}
void DisCoveryDeviceInfo::SetFirmwareVersion(XString arg_strFirmwareVersion)
{
m_strFirmwareVersion = arg_strFirmwareVersion;
}
const char* DisCoveryDeviceInfo::GetDeviceIP(void)
{
return m_strIP.c_str();
}
const char* DisCoveryDeviceInfo::GetDeviceUUID(void)
{
return m_strUUID.c_str();
}
const char* DisCoveryDeviceInfo::GetDeviceTypes(void)
{
return m_strDeviceTypes.c_str();
}
const char* DisCoveryDeviceInfo::GetDeviceEPAddress(void)
{
return m_strDeviceEPAddress.c_str();
}
const char* DisCoveryDeviceInfo::GetWebServiceURL(void)
{
return m_strDeviceServiceAddresss.c_str();
}
const char* DisCoveryDeviceInfo::GetUserName(void)
{
return m_strUserName.c_str();
}
const char* DisCoveryDeviceInfo::GetPassword(void)
{
return m_strPassword.c_str();
}
static void StringSplit(XString source, vector<XString>& dest, char division)
{
if (!source.IsEmpty())
{
int pos = source.Find(division);
if (pos == -1)
{
//dest.Add(source);
dest.push_back(source);
}
else
{
XString tmp = source.Left(pos);
dest.push_back(tmp);
source = source.Mid(pos + 1);
StringSplit(source, dest, division);
}
}
}
void DisCoveryDeviceInfo::GetScopes(std::vector<std::string> &vecScopes)
{
vector<XString> xvecScopes;
XString t_strSwap = m_strScopes;
char cFindChar = 32;//왕목
StringSplit(t_strSwap, xvecScopes, cFindChar);
for (int i=0;i<xvecScopes.size();i++)
{
vecScopes.push_back(xvecScopes[i].c_str());
}
}
const char* DisCoveryDeviceInfo::GetMetadataVersion(void)
{
return m_strMetadataVersion.c_str();
}
const char* DisCoveryDeviceInfo::GetBrand(void)
{
return m_strBrand.c_str();
}
const char* DisCoveryDeviceInfo::GetModel(void)
{
return m_strModel.c_str();
}
const char* DisCoveryDeviceInfo::GetSN(void)
{
return m_strSerialNumber.c_str();
}
const char* DisCoveryDeviceInfo::GetFirmwareVersion(void)
{
return m_strFirmwareVersion.c_str();
}
SOAP_FMAC5 int SOAP_FMAC6 soap_send___wsdd__Probe(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct wsdd__ProbeType *wsdd__Probe)
{
struct __wsdd__Probe soap_tmp___wsdd__Probe;
if (soap_action == NULL)
soap_action = "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/Probe";
soap_tmp___wsdd__Probe.wsdd__Probe = wsdd__Probe;
soap_begin(soap);
soap_set_version(soap, 2); /* SOAP1.2 */
soap->encodingStyle = NULL;
soap_serializeheader(soap);
soap_serialize___wsdd__Probe(soap, &soap_tmp___wsdd__Probe);
if (soap_begin_count(soap))
return soap->error;
if (soap->mode & SOAP_IO_LENGTH)
{
if (soap_envelope_begin_out(soap)
|| soap_putheader(soap)
|| soap_body_begin_out(soap)
|| soap_put___wsdd__Probe(soap, &soap_tmp___wsdd__Probe, "-wsdd:Probe", "")
|| soap_body_end_out(soap)
|| soap_envelope_end_out(soap))
return soap->error;
}
if (soap_end_count(soap))
return soap->error;
if (soap_connect(soap, soap_endpoint, soap_action)
|| soap_envelope_begin_out(soap)
|| soap_putheader(soap)
|| soap_body_begin_out(soap)
|| soap_put___wsdd__Probe(soap, &soap_tmp___wsdd__Probe, "-wsdd:Probe", "")
|| soap_body_end_out(soap)
|| soap_envelope_end_out(soap)
|| soap_end_send(soap))
return soap_closesock(soap);
return SOAP_OK;
}
评论0
最新资源