00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00035 #include "OW_config.h"
00036 #include "OW_ClientCIMOMHandle.hpp"
00037 #include "OW_CIMNameSpaceUtils.hpp"
00038 #include "OW_URL.hpp"
00039 #include "OW_CIMProtocolIFC.hpp"
00040 #include "OW_HTTPClient.hpp"
00041 #include "OW_BinaryCIMOMHandle.hpp"
00042 #include "OW_CIMXMLCIMOMHandle.hpp"
00043 #include "OW_HTTPChunkedIStream.hpp"
00044 #include "OW_Enumeration.hpp"
00045 #include "OW_HTTPDeflateIStream.hpp"
00046
00047 namespace OW_NAMESPACE
00048 {
00049
00050 using namespace WBEMFlags;
00051 #if !defined(OW_DISABLE_INSTANCE_MANIPULATION) && !defined(OW_DISABLE_NAMESPACE_MANIPULATION)
00052
00053 void
00054 ClientCIMOMHandle::createNameSpace(const String& ns)
00055 {
00056 CIMNameSpaceUtils::create__Namespace(*this, ns);
00057 }
00059 void
00060 ClientCIMOMHandle::deleteNameSpace(const String& ns_)
00061 {
00062 CIMNameSpaceUtils::delete__Namespace(*this, ns_);
00063 }
00064 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00065
00066 void
00067 ClientCIMOMHandle::enumNameSpace(const String& ns_,
00068 StringResultHandlerIFC &result, EDeepFlag deep)
00069 {
00070 CIMNameSpaceUtils::enum__Namespace(*this, ns_, result, deep);
00071 }
00072
00074
00075 ClientCIMOMHandleRef
00076 ClientCIMOMHandle::createFromURL(const String& url,
00077 const ClientAuthCBIFCRef& authCb,
00078 const SSLClientCtxRef& sslCtx)
00079 {
00080 URL owurl(url);
00081 CIMProtocolIFCRef client(new HTTPClient(url, sslCtx));
00082 client->setLoginCallBack(authCb);
00083
00084 if (owurl.scheme.startsWith(URL::OWBINARY)
00085 || owurl.namespaceName.equals(URL::OWBINARY))
00086 {
00087 return ClientCIMOMHandleRef(new BinaryCIMOMHandle(client));
00088 }
00089 else
00090 {
00091 return ClientCIMOMHandleRef(new CIMXMLCIMOMHandle(client));
00092 }
00093 }
00094
00096 void
00097 ClientCIMOMHandle::getHTTPTrailers(const CIMProtocolIStreamIFCRef& istr_)
00098 {
00099 m_trailers.clear();
00100 CIMProtocolIStreamIFCRef istr(istr_);
00101 #ifdef OW_HAVE_ZLIB_H
00102 IntrusiveReference<HTTPDeflateIStream> defistr = istr_.cast_to<HTTPDeflateIStream>();
00103 if (defistr)
00104 {
00105 istr = defistr->getInputStreamOrig();
00106 }
00107 #endif
00108 IntrusiveReference<HTTPChunkedIStream> chunkistr = istr.cast_to<HTTPChunkedIStream>();
00109 if (chunkistr)
00110 {
00111 m_trailers = chunkistr->getTrailers();
00112 }
00113 }
00114
00115
00116 }
00117