blob: 0780f405061adc159beaca3af306dc25d628ed3d [file] [log] [blame]
#include "CimClient.h"
#include "CimEnumeration.h"
#include "CimObjectPath.h"
char *makeMsgds(const char *m, int d1, const char *s1)
{
char s[512];
snprintf(s,512,m,d1,s1);
return strdup(s);
}
CimClient::CimClient(const char* id)
{
int rc;
char *msg;
env = NewCimcEnv(id, 0 , &rc, &msg);
if (env==NULL)
throw (CimStatus(CIMC_RC_ERR_FAILED,
makeMsgds("--- Failed to load cimc environment rc: %d %s",rc,msg)));
}
CimClient::~CimClient()
{
if (cc) cc->ft->release(cc);
ReleaseCimcEnv(env);
}
void CimClient::connect()
{
cimcStatus st;
cc = env->ft->connect(env, "host", NULL, "5988","","",&st);
if (cc==NULL) throw(CimStatus(st));
}
CimObjectPath CimClient::makeObjectPath(const char *ns, const char *cn)
{
cimcStatus st;
cimcObjectPath *op=env->ft->newObjectPath(env,"root/cimv2", NULL, &st);
if (st.rc) throw (CimStatus(st));
return CimObjectPath(op);
}
CimObjectPathEnumeration CimClient::enumerateClassNames(CimObjectPath &op, cimcFlags flags)
{
cimcStatus st;
cimcEnumeration *en=cc->ft->enumClassNames(cc,op->getEnc(),flags,&st);
if (st.rc) throw (CimStatus(st));
return CimObjectPathEnumeration(en);
}
CimClassEnumeration CimClient::enumerateClasses(CimObjectPath &op, cimcFlags flags)
{
cimcStatus st;
cimcEnumeration *en=cc->ft->enumClasses(cc,op->getEnc(),flags,&st);
if (st.rc) throw (CimStatus(st));
return CimClassEnumeration(en);
}