Yasuhiro Matsumoto wrote:

> > > connect() doesn't have timeout. So when server is down, connect()
> > > hangs while 1 or 2 minuts. Below is a patch to add timeout query like
> > > URL.
> > > 
> > >   connect("localhost:12345?timeout=3")
> > > 
> > > https://gist.github.com/mattn/867a635e14ac2360613a
> > > 
> > > But I'm thinking there is another ways to specify {timeout} like below.
> > > 
> > > 
> > >   connect("localhost:12345", {"type": "raw", "timeout": 3})
> > > 
> > > How do you think?
> > 
> > Thanks.  Yes, we need to be able to specify a timeout.  Both for making
> > the connection and for waiting for a response.
> > 
> > Since the number of options is likely to increase, using a dict instead
> > of positional arguments is appropriate.  We do need default values:
> > 
> >     mode            default "json"
> >     callback        default: none
> >     waittime        default: zero (waiting for the server)
> >     timeout         default: 1 second (waiting for response)
> > 
> > Something like that.  Could also use a separate call to set the response
> > timeout, like there is a way to set the callback with sethandler().
> > We could end up with lots of functions though. perhaps a channelconfig()
> > function with a dict argument is better.
> > 
> > I think we should normally assume that the server is already running.
> > This allows for using a connect() call to check for that, and allow for
> > starting the server if it fails.
> > 
> >     let handle = connect("localhost:1234")
> >     if handle < 0
> >             call StartServer()
> >             let handle = connect("localhost:1234" {"waittime": 3})
> >     endif
> 
> Well, when the {callback} is specified in the dict and 3rd argument
> either, which is used?
> 
>    connect("localhost:12345", "json", "Callback")
>    connect("localhost:12345", {"mode": "json", "callback": "Callback"}, 
> "AnotherCallback")

There won't be a third argument.

I'm also wondering if we should have all the functions start with
"channel".  With connect(), disconnect(), sethandler(), etc. they will be
all over the place and hard to find.  How about this:

        channelopen()
        channelclose()
        channelcallback()
        channeltimeout()
        channelsendexpr()
        channelsendraw()

We probably need a few more later.

The names are a bit long and not easy to read, perhaps we can use a ch_
prefix:

        ch_open()
        ch_close()
        ch_callback()
        ch_timeout()
        ch_sendexpr()
        ch_sendraw()

-- 
To be rich is not the end, but only a change of worries.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui