Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DefCatInfoReq support
#1
Dean,

User Ron Seese is trying to use the XML Gateway client to access his CQC system, which he says is version 4.5.1. When I attempt to send the CQCGWBig GrinefCatInfoReq message as part of retrieving the media info, the server returns the exception below. I assume that this is because his server is either too old, and doesn't support the media calls, or too new, and you have changed the interface. If it's the latter (too new), is there any way to detect what interface the server is expecting, and react accordingly? Any information about what is going wrong would be appreciated. Thanks.

Brian

<CQCGW:Msg>
<CQCGW:ExceptionReply CQCGW:ErrClass="EClass_Protocol"
CQCGW:ErrSev="ESev_Failed" CQCGW:File="CQCGWSrv_WorkerHelpers.cpp"
CQCGW:Line="780" CQCGWTonguerocess="CQCGWSrv"
CQCGW:Thread="CQCGWSrvWorkerThread3">
The XML message parse failed
System Id: CQCGWOpBuf, Line/Col: 1/228, Text: Child #1 'CQCGWBig GrinefCatInfoReq'
is not valid for content model:
(CQCGW:ConnRes|(CQCGWBig GrineviceList|(CQCGWBig Grinisconnect|(CQCGW:SetPollList|(CQCGW
TongueollReply|(CQCGW:LogonReq|(CQCGW:LogonChallenge|(CQCGW:GetSecurityToken|(CQ
CGW:ExceptionReply|(CQCGW:AckReply|(CQCGW:NakReply|(CQCGW:Query|(CQCGW:Macro
Scope|(CQCGWBig GrinoGlobalAct|(CQCGW:GActScope|(CQCGWBig GrinrvList|(CQCGW:RunMacro|(CQ
CGW:MacroResults|(CQCGW:FldValue|(CQCGW:TemplateScope|(CQCGW:UnknownExceptio
nReply|(CQCGW:SetOpts|(CQCGW:QueryFldInfo|(CQCGW:FldInfo|(CQCGW:QueryFldInfo
List|(CQCGW:FldInfoList|(CQCGW:QueryImage|(CQCGW:WriteField|(CQCGW:ImageData
|(CQCGW:QueryDriverStatus|(CQCGWBig GrinriverStatus|(CQCGW:ReadField|(CQCGW:QueryM
ediaRendArt|(CQCGW:QueryMediaArt|(CQCGW:MediaImgData|(CQCGW:MWriteField|(CQC
GW:QueryDriverText|(CQCGWBig GrinriverText|(CQCGW:QueryDriverInfo|(CQCGWBig GrinriverInf
o|(CQCGWTongueerEvInfo|(CQCGW:SchEvInfo|(CQCGW:SunEvInfo|(CQCGW:SetPerEv|(CQCGW:
SetSchEv|(CQCGW:SetSunEv|(CQCGW:QuerySchEv|(CQCGW:QuerySchEvs|(CQCGWTongueauseSc
hEv|(CQCGW:SchEvs|(CQCGW:QueryMediaDB|(CQCGW:MediaDBInfo|(CQCGW:RoomCfgReq|(
CQCGW:RoomCfgRep|CQCGW:RoomList)))))))))))))))))))))))))))))))))))))))))))))
)))))))))
</CQCGW:ExceptionReply>
</CQCGW:Msg>
Reply
#2
That would be expected. Remember that, as of 4.5, we serve up the whole databases at once. I posted a good bit of info about this in another thread, which I'll find and post a link to here.

But basically it's what you had been asking for, to let you just download the metadata and do all of the media browsing yourself. The XML GW protocol document has been updated to reflect these changes as well.

You can download the database and will get that data plus a unique id for that database. At any time later you can check to see whether new data is available by passing that id back in. If new data is available you'll get it, else you'll be told you have the latest. Since generally it doesn't change, for the most part you will never have to download the metadata, other than images I mean.

That means you have all of it there and allow the user to peruse it any way you want, which was what you had been asking for because of the klunkiness of the page by page scenario. And it also means you can provide any sorts of searches and sorts and all that, because you have it all right there to do what you want.
Dean Roddey
Software Geek Extraordinaire
Reply
#3
The other thread is in the general sub-section of this third party software section. It's here:

http://www.charmedquark.com/vb_forum/sho...hp?t=11574

It describes what went on during that process and whatnot. THe details of course are in the XML GW document, but you might want to read through that (failry short) thread to get a feel for what happened and all that.

But, overall, it should let you get rid of a lot of nitpicky client/server stuff and replace it with your own, much simpler, and much higher performance, code.
Dean Roddey
Software Geek Extraordinaire
Reply
#4
OK, that's sort of what I expected. But then how do I write a client that can talk to both the new and old servers? If I can the old messages, it will stop working with the servers using the existing versions. In RIVA, there were protocol versions. Is there anything like that with the XML Gateway? Or do I have to just try one message, and if I get an exception, fall back to the old messages?
Reply
#5
I can add a version indicator, which makes a lot of sense and I'm not sure why I didn't think about it. Presumably in the login challenge msg I guess.

OTOH, there is probably a good argument for you to, at this point, just branch off a V2 version of the product. Leave the current one as is with only maintenance fixes (probably not likely to be many at this point), and move the new one towards working in terms of the V2 interfaces. Since the room config only works in terms of V2 drivers now that's all that you will end up dealing with in terms of the configured room functionality.

That could make things much simpler and probably let you drop a lot of overhead and safely figure out a lot more things on your own. And it would avoid a LOT of complexity trying to support both schemes at the same time. So you could move the new one forward cleanly, and probably little to no actual support burden for the old one.
Dean Roddey
Software Geek Extraordinaire
Reply
#6
I could do that, but then people with the older version of the CQC system wouldn't be able to use the app. The App Store doesn't really let you choose a version to install; it's always the latest and greatest, I think. But I will think about how to proceed when I have chance to work on all this, hopefully some time this fall.
Reply
#7
You can't create an App Next Generation or something, which effectively looks like a separate product?
Dean Roddey
Software Geek Extraordinaire
Reply
#8
Then the users would have to pay again in the App Store, I think.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)