| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include "./commandNodeParser.h"
- #include "./loginCommand.h"
- #include "./loginProvider.h"
- #include "../../xml/obj_xml.h"
- LoginCommandNodeParser::LoginCommandNodeParser()
- : reader(NULL), provider(NULL)
- {
- }
- LoginCommandNodeParser::~LoginCommandNodeParser()
- {
- End();
- }
- HRESULT LoginCommandNodeParser::Begin(obj_xml *pReader, LoginProvider *pProvider)
- {
- if (NULL != reader || NULL != provider)
- return E_PENDING;
- if (NULL == pReader || NULL == pProvider)
- return E_INVALIDARG;
- reader = pReader;
- reader->AddRef();
-
- provider = pProvider;
- provider->AddRef();
- reader->xmlreader_registerCallback(L"loginProviders\fprovider\fcommand", this);
-
- return S_OK;
- }
- HRESULT LoginCommandNodeParser::End()
- {
- if (NULL != reader)
- {
- reader->xmlreader_unregisterCallback(this);
- reader->Release();
- reader = NULL;
- }
- if (NULL != provider)
- {
- provider->Release();
- provider = NULL;
- }
- return S_OK;
- }
- void LoginCommandNodeParser::Event_XmlStartElement(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params)
- {
- elementParser.Begin(reader, params);
- }
- void LoginCommandNodeParser::Event_XmlEndElement(const wchar_t *xmlpath, const wchar_t *xmltag)
- {
- LoginCommand *result;
- if (SUCCEEDED(elementParser.End(reader, &result)))
- {
- if (NULL != provider)
- provider->SetCommand(result);
-
- result->Release();
- }
- }
- void LoginCommandNodeParser::Event_XmlError(int linenum, int errcode, const wchar_t *errstr)
- {
- }
- #define CBCLASS LoginCommandNodeParser
- START_DISPATCH;
- VCB(ONSTARTELEMENT, Event_XmlStartElement)
- VCB(ONENDELEMENT, Event_XmlEndElement)
- VCB(ONERROR, Event_XmlError)
- END_DISPATCH;
- #undef CBCLASS
|