On 5 Oct 2004, at 14:37, Frank D. Engel, Jr. wrote:

Okay, so I got tired of waiting for RevDB to be fixed for PostgreSQL (or for some explanation of how to set it up, in case my drivers are not correctly positioned), so I am trying to write my own, Transcript-native PostgreSQL driver for Rev (with its own API, by means of a 'start using' command...) Never tried this before, but I did get the 'start using' to work.

I *think* I was able to get sockets working, too, but for some reason, at least under OS X, I cannot seem to read from a socket. What am I doing wrong here? I have the following handler in my code:

function pgFetchMessage
read from socket pg_sock for 5
put it into x
put (charToNum(char 2 of x) * 16777216) + (charToNum(char 3 of x) * 65536) + (charToNum(char 4 of x) * 256) + charToNum(char 5 of x) \
into l
read from socket pg_sock for l
put it into z
answer charToNum(the first char of x) titled (pg_sock) && (the length of x)
return (x & z)
end pgFetchMessage



The "answer" line results in the following title bar (empty message):

localhost:5432 0

Why would this happen? That "0" means that the length of string "x" (which should contain exactly five characters, right?) is zero. In other words, that string is empty -- but it shouldn't be!

It could be that there is no data on the socket when you do the read. You could try replacing the "read from socket pg_sock for 5" with this:

put empty into x
repeat while length(x) < 5
  read from socket pg_sock for 5 - length(x)
  put it after x
end repeat

Or, use the "with message" form of read, which I find to be more reliable, However, you'd have to change the structure of your handler a little.

Cheers
Dave

_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to