The state machine starts in "type" state.

case "type":
var r = self.popByte();
if (r) {
self.state = (r.data == "\0") ? "status" : "item";
progress = true;
}
break

But the first time it gets in here popByte returns an empty object for r.
 I would have expected it to get that they "type" is \000b.  Maybe there's
something wrong at the deeper interpretation level.  This does look like a
proper response from BaseX:

S1<<
'\u000b<person>Gumby\nman</person>\u0000\u000b<person>Pokey\nhorse</person>\u0000\u0000\u0000'

Does it not?


On Tue, Jul 23, 2013 at 4:09 PM, Gerald de Jong <ger...@delving.eu> wrote:

> Hi Andy!  Thanks for getting back to me so quickly.  I'm indeed using:
>
> package.json:    "basex": "~0.6.1"
>
> I thought as well that it might be an old reply, but all I do is create a
> database, insert a document, and then query for something that is not there.
>
> I am using BaseX 7.6 if that makes any difference.
>
> Maybe you can see it.  Here's the debug of what goes back and forth during
> the whole session:
>
> S1<<
> '1374588092554420000\u0000'
> S1>>
> 'admin\u0000'
> S1>>
> '713de454606e785a0666bd57e6554891\u0000'
> S1<<
> '\u0000'
> S1: authorized
> S1>>
> 'create db gumby\u0000'
> S1<<
> '\u0000Database \'gumby\' created in 5.01 ms.\n\u0000\u0000'
> response:  { result: '',
>   info: 'Database \'gumby\' created in 5.01 ms.\n',
>   ok: true }
> .S1>>
>
> '\t/people.xml\u0000<people><person>Gumby\nman</person><something>else</something><person>Pokey\nhorse</person></people>\u0000'
> S1<<
> 'Path "people.xml" added in 1.88 ms.\n\u0000\u0000'
> response:  { ok: true, result: 'Path "people.xml" added in 1.88 ms.\n' }
> .S1>>
> '\u0000//somethingNotThere\u0000'
> S1<<
> '0\u0000\u0000'
> response:  { ok: true, result: '0' }
> S1>>
> '\u00040\u0000'
> S1<<
> '\u0000\u0000'
>
> And then it hangs, since the callback isn't called.
>
> If, instead, I do a query that does give results back I get the first
> value prefixed with \000b, which I believe is intended to indicate that the
> result is an "element".
>
> S1<<
>
> '\u000b<person>Gumby\nman</person>\u0000\u000b<person>Pokey\nhorse</person>\u0000\u0000\u0000'
> response:  { ok: true,
>   result:
>    [ '\u000b<person>Gumby\nman</person>',
>      '<person>Pokey\nhorse</person>' ] }
>
> {"ok":true,"result":["\u000b<person>Gumby\nman</person>","<person>Pokey\nhorse</person>"]}
>
> See what I mean?
>
> -Gerald
>
>
> On Tue, Jul 23, 2013 at 3:54 PM, Andy Bunce <bunce.a...@gmail.com> wrote:
>
>> Hi Gerald,
>>
>> Could that '\u0000\u0000' be part of an asynchronous  response to some
>> previous command?
>>
>> Otherwise it looks fine:
>> -> '\u0000 () \u0000'   // create query returning empty sequence
>> <- '1\u0000 \u0000'     //The 1 is the query handle.
>> -> '\u0004 1 \u0000'    //Execute the query with handle 1
>> <- '\u0000 \u0000'      // no result no error
>>
>> Are you using https://npmjs.org/package/basex? If you can raise any
>> problems or questions on github and I will take a look.
>>
>> /Andy
>>
>> On Tue, Jul 23, 2013 at 12:43 PM, Gerald de Jong <ger...@delving.eu>wrote:
>>
>>> So the driver sends a query for something that should give no results:
>>>
>>> '\u0000/somethingNotThere\u0000'
>>>
>>> It then receives, to my surprise:
>>>
>>> '\u0000\u0000'
>>>
>>> followed by:
>>>
>>> '1\u0000\u0000'
>>>
>>> then sends:
>>>
>>> '\u00041\u0000'
>>>
>>> and receives again:
>>>
>>> '\u0000\u0000'
>>>
>>> Are these proper responses.. is the driver misunderstanding them?
>>>
>>>
>>>
>>> On Tue, Jul 23, 2013 at 1:41 PM, Gerald de Jong <ger...@delving.eu>wrote:
>>>
>>>> Woops, somehow sent before I intended.  Just a sec.
>>>>
>>>>
>>>> On Tue, Jul 23, 2013 at 1:40 PM, Gerald de Jong <ger...@delving.eu>wrote:
>>>>
>>>>> I'm trying to quickly prototype a REST server which uses BaseX for
>>>>> persistence using NodeJS.
>>>>>
>>>>> I'm able to create a session, add a document, query that document, and
>>>>> then close the session.  Fine.
>>>>>
>>>>> But when I create a query that should return no results, it seems the
>>>>> NodeJS module for BaseX I'm using seems to completely misunderstand the
>>>>> result and never execute the callback.
>>>>>
>>>>> I looked at the protocol spec
>>>>> http://docs.basex.org/wiki/Server_Protocol but it doesn't seem to
>>>>> give back what is specified here.  I need a sanity check.
>>>>>
>>>>> The driver sends this:
>>>>>
>>>>> --
>>> Delving BV, Vasteland 8, Rotterdam
>>> http://www.delving.eu
>>> http://twitter.com/fluxe
>>> skype: beautifulcode
>>> +31629339805
>>>
>>> _______________________________________________
>>> BaseX-Talk mailing list
>>> BaseX-Talk@mailman.uni-konstanz.de
>>> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
>>>
>>>
>>
>
>
> --
> Delving BV, Vasteland 8, Rotterdam
> http://www.delving.eu
> http://twitter.com/fluxe
> skype: beautifulcode
> +31629339805
>



-- 
Delving BV, Vasteland 8, Rotterdam
http://www.delving.eu
http://twitter.com/fluxe
skype: beautifulcode
+31629339805
_______________________________________________
BaseX-Talk mailing list
BaseX-Talk@mailman.uni-konstanz.de
https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk

Reply via email to