On Wed, Dec 14, 2016 at 10:34 PM, <ellio...@gmail.com> wrote:

> Hello All,
>
> I am looking for a little bit of advice for making a new client library
> for SocketCAN
> <https://www.kernel.org/doc/Documentation/networking/can.txt>sockets in
> Linux.
>
> Low level support for SockaddrCAN was just added to /x/sys/unix (
> https://github.com/golang/go/issues/16188) and now I want to make a nice
> user level library to make things easier.
>
> It is fairly common to require read/write timeouts on the socket, this
> means that it would be ideal to implement the net.Conn interface with
> support for Set*Deadline, however I am struggling with the best way to do
> this.  I can see 3 options, and hopefully someone here has some ideas which
> would be best (or something completely different that I didn't think of).
>
>
>    1. I could just implement all the deadlines myself by using unix.Poll
>    to check for activity on the file descriptor before I do a read/write
>    (basically the old C method). This seems like the easiest, however I am
>    unsure how the go runtime will like it if I have a bunch of goroutines all
>    sitting in unix.Poll system calls, not going through the "netpoller".
>    2. I could copy out the relevant code from the "net" package,
>    including fd_unix.go <https://golang.org/src/net/fd_unix.go>,
>    fd_poll_runtime.go <https://golang.org/src/net/fd_poll_runtime.go>,
>    fd_mutex.go <https://golang.org/src/net/fd_mutex.go>, and perhaps a
>    few others. This seems like it will quickly take me down the rabbit hole,
>    as the I think I might end up having to copy quite a large portion of the
>    package into my own.
>    3. I could just fork the net library as an internal dependency and
>    then create a CANConn type inside it. I am currently leaning towards this
>    idea, but I have the nagging suspicion that it is actually a really dumb
>    idea for reasons that I am just too ignorant to know.
>
> Anybody have any suggestions?
>

not a suggestion, but a shameless plug and an offer to work on:
 https://godoc.org/github.com/go-daq/canbus

:)

I haven't dealt with a nice net.Conn like interface and just went with a
Socket-like interface, pretty much like the one from
https://github.com/go-mangos/mangos.

hth,
-s

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

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

Reply via email to