[#18186] [req] Marshal — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 2002/09/05
[#18190] Re: [req] Marshal — matz@... (Yukihiro Matsumoto) 2002/09/05

まつもと ゆきひろです

[#18229] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

22 messages 2002/09/09
[#18230] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — nobu.nakada@... 2002/09/09

なかだです。

[#18231] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18232] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — nobu.nakada@... 2002/09/09

なかだです。

[#18233] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18234] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — WATANABE Hirofumi <eban@...> 2002/09/09

わたなべです。

[#18236] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18238] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — WATANABE Hirofumi <eban@...> 2002/09/09

わたなべです。

[#18241] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18285] rubicon on EWS4800 — Koji Arai <JCA02266@...>

新井です。

59 messages 2002/09/13
[#18322] Re: rubicon on EWS4800 — Koji Arai <JCA02266@...> 2002/09/21

新井です。

[#18333] Re: rubicon on EWS4800 — kjana@...4lab.to (YANAGAWA Kazuhisa) 2002/09/21

In message <20020921.152641.11483667.JCA02266@nifty.ne.jp>

[#18336] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18337] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211605.g8LG52p04564@sharui.nakada.kanuma.tochigi.jp>,

[#18338] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18341] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211628.g8LGSxp04786@sharui.nakada.kanuma.tochigi.jp>,

[#18342] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18343] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211739.g8LHdKp05495@sharui.nakada.kanuma.tochigi.jp>,

[#18345] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/22

なかだです。

[#18349] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/22

In article <200209220415.g8M4Fkp24392@sharui.nakada.kanuma.tochigi.jp>,

[#18374] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...>

わたなべです。

20 messages 2002/09/25
[#18376] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — matz@... (Yukihiro Matsumoto) 2002/09/25

まつもと ゆきひろです

[#18377] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — nobu.nakada@... 2002/09/25

なかだです。

[#18378] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...> 2002/09/25

わたなべです。

[ruby-dev:18133] Re: Selection IPv4/IPv6 at TCPSocket

From: GOTO Kentaro <gotoken@...>
Date: 2002-09-01 07:22:54 UTC
List: ruby-dev #18133
At Sun, 1 Sep 2002 14:52:48 +0900,
GOTO Kentaro wrote:
> TCPSocket のサブクラスとして TCPSocket4 と TCPSocket6 を、
> TCPServer のサブクラスとして TCPServer4 と TCPServer6 を用意
> してはどうかということです。TCPServer と TCPSocket 自体は現
> 状のままでです。一番のメリットはオプショナルな引数を使わなく
> て良いことです。

とりあえず TCPSocket の方だけRubyで書いてみました。1.6 でも
使えるようにしたので長くなってしまいましたがロジックはこんな
感じでしょう。

好みをいえばプロトコル独立推奨なので、socket.c をいじるので
はなく、以下のような tcpsocket.rb とかいうものを socket.so 
に加えて require して使うのが良いような気がしています。

class TCPSocket4 < TCPSocket
  class <<self
    alias_method(:__new__, :new)
    private :__new__
    @@options = [Socket::AF_INET, Socket::SOCK_STREAM, Socket::IPPROTO_IP]

    if TCPSocket.method(:new).arity == 2
      def new(host, service)
        af = Socket::getaddrinfo(host, service, *@@options).first
        addr, port = af.indices(3,1)
        __new__(addr, port)
      end
    else
      def new(host, service, local_host = nil, local_service = nil)
        af = Socket::getaddrinfo(host, service, *@@options).first
        addr, port = af.select(3,1)
        if local_host and local_service
          af = Socket::getaddrinfo(local_host, local_service, *@@options).first
          local_addr, local_port = af.select(3,1)
          __new__(addr, port, local_addr, local_port)
        else
          __new__(addr, port)
        end
      end
    end
  end
end

class TCPSocket6 < TCPSocket
  class <<self
    alias_method(:__new__, :new)
    private :__new__
    @@options = [Socket::AF_INET6, Socket::SOCK_STREAM, Socket::IPPROTO_IP]

    if TCPSocket.method(:new).arity == 2
      def new(host, service)
        af = Socket::getaddrinfo(host, service, *@@options).first
        addr, port = af.indices(3,1)
        __new__(addr, port)
      end
    else
      def new(host, service, local_host = nil, local_service = nil)
        af = Socket::getaddrinfo(host, service, *@@options).first
        addr, port = af.select(3,1)

        if local_host and local_service
          af = Socket::getaddrinfo(local_host, local_service, *@@options).first
          local_addr, local_port = af.select(3,1)
          __new__(addr, port, local_addr, local_port)
        else
          __new__(addr, port)
        end
      end
    end
  end
end

In This Thread