Hi,

Since a few weeks I am working on a client for the R language. I use
BaseXClient.java as example. And in R I use the R6 package for object
orientation.

And at this moment I can login and issue COMMANDs.

I guess that at this moment and for this question, these parts of the
code are the most essential:

- socket-definition:
private$sock <- socketConnection(host = "localhost", port = 1984L,
open = "w+b", server = FALSE, blocking = TRUE, encoding = "utf-8")

- execute a command:
    execute = function(command) {
      flush(private$sock)
      private$send(command)
      private$info <- private$receive()
      private$testSock()
      result <- private$show_receive()
      return(result)
    }

- get the server-response:
    receive = function(input, output) {
      private$info <- NULL
      if (missing(input) || missing(output)) {
        output <- raw(0)
        output <- private$receive(private$sock, output)
        return(rawToChar(output))
      } else {
        while((rd <- readBin(input, what = "raw", n =1)) >0) {
          if (rd == 0xff) next
          output <- append(output, rd)
        }
        return(output)
      }

- test the result (Exceptionhandling):
    testSock = function() {
      tryCatch({
        test <- readBin(private$sock, what = "raw", n =1)
      }, error = function(e) {
        print("ERROR")
        print(e)
        return(FALSE)
      })
      return(test == 0x00)
    }


I create a session and issue some commands from in a script:
Session <- BasexClient$new("localhost", 1984, "admin", "admin")
print(Session$execute("xquery 1 to 5"))
print(Session$execute("xquery 6 to 10"))
print(Session$execute("list"))

When testsock is used in the first call, the readBin in the third line
returns 00! Perfect! Result is
[[1]]
[1] "1" "2" "3" "4" "5"
When testsock is used for the second call returns 0a ;-( and output is [[1]]
character(0)

When I comment out the first two calls, result is:
[[1]]
[1] "Name       Resources  Size      Input Path
                                             "
[2]
"---------------------------------------------------------------------------------------------------------------"

[3] "EUR        164        12288704  /home/bengbers/Programs/basex/
                                             "
[4] "EUR_Debat  1492       44857696
/home/bengbers/DataScience/TextMining-Web-Analytics/Text-mining
case/xml_files/  "
[5] "test1      0          4568
                                             "
[6] ""

[7] "3 database(s)."


My question for this moment is, if the response '0a' in testSock is
truly the response from the basexserver or is this an error that is
returned by the socket?

Is the a list that explains the errorcodes returnde by the basex-server?

Ben

Reply via email to