add local/remote ip to socket
This commit is contained in:
parent
a0b257b572
commit
71bacf6991
@ -40,6 +40,10 @@ type httpTransportClient struct {
|
|||||||
r chan *http.Request
|
r chan *http.Request
|
||||||
bl []*http.Request
|
bl []*http.Request
|
||||||
buff *bufio.Reader
|
buff *bufio.Reader
|
||||||
|
|
||||||
|
// local/remote ip
|
||||||
|
local string
|
||||||
|
remote string
|
||||||
}
|
}
|
||||||
|
|
||||||
type httpTransportSocket struct {
|
type httpTransportSocket struct {
|
||||||
@ -51,6 +55,10 @@ type httpTransportSocket struct {
|
|||||||
conn net.Conn
|
conn net.Conn
|
||||||
// for the first request
|
// for the first request
|
||||||
ch chan *http.Request
|
ch chan *http.Request
|
||||||
|
|
||||||
|
// local/remote ip
|
||||||
|
local string
|
||||||
|
remote string
|
||||||
}
|
}
|
||||||
|
|
||||||
type httpTransportListener struct {
|
type httpTransportListener struct {
|
||||||
@ -62,6 +70,14 @@ func (b *buffer) Close() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *httpTransportClient) Local() string {
|
||||||
|
return h.local
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpTransportClient) Remote() string {
|
||||||
|
return h.remote
|
||||||
|
}
|
||||||
|
|
||||||
func (h *httpTransportClient) Send(m *Message) error {
|
func (h *httpTransportClient) Send(m *Message) error {
|
||||||
header := make(http.Header)
|
header := make(http.Header)
|
||||||
|
|
||||||
@ -173,6 +189,14 @@ func (h *httpTransportClient) Close() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *httpTransportSocket) Local() string {
|
||||||
|
return h.local
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpTransportSocket) Remote() string {
|
||||||
|
return h.remote
|
||||||
|
}
|
||||||
|
|
||||||
func (h *httpTransportSocket) Recv(m *Message) error {
|
func (h *httpTransportSocket) Recv(m *Message) error {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return errors.New("message passed in is nil")
|
return errors.New("message passed in is nil")
|
||||||
@ -368,12 +392,14 @@ func (h *httpTransportListener) Accept(fn func(Socket)) error {
|
|||||||
ch <- r
|
ch <- r
|
||||||
|
|
||||||
fn(&httpTransportSocket{
|
fn(&httpTransportSocket{
|
||||||
ht: h.ht,
|
ht: h.ht,
|
||||||
w: w,
|
w: w,
|
||||||
r: r,
|
r: r,
|
||||||
rw: buf,
|
rw: buf,
|
||||||
ch: ch,
|
ch: ch,
|
||||||
conn: con,
|
conn: con,
|
||||||
|
local: h.Addr(),
|
||||||
|
remote: r.RemoteAddr,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -430,6 +456,8 @@ func (h *httpTransport) Dial(addr string, opts ...DialOption) (Client, error) {
|
|||||||
buff: bufio.NewReader(conn),
|
buff: bufio.NewReader(conn),
|
||||||
dialOpts: dopts,
|
dialOpts: dopts,
|
||||||
r: make(chan *http.Request, 1),
|
r: make(chan *http.Request, 1),
|
||||||
|
local: conn.LocalAddr().String(),
|
||||||
|
remote: conn.RemoteAddr().String(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ type mockSocket struct {
|
|||||||
exit chan bool
|
exit chan bool
|
||||||
// listener exit
|
// listener exit
|
||||||
lexit chan bool
|
lexit chan bool
|
||||||
|
|
||||||
|
local string
|
||||||
|
remote string
|
||||||
}
|
}
|
||||||
|
|
||||||
type mockClient struct {
|
type mockClient struct {
|
||||||
@ -51,6 +54,14 @@ func (ms *mockSocket) Recv(m *transport.Message) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ms *mockSocket) Local() string {
|
||||||
|
return ms.local
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ms *mockSocket) Remote() string {
|
||||||
|
return ms.remote
|
||||||
|
}
|
||||||
|
|
||||||
func (ms *mockSocket) Send(m *transport.Message) error {
|
func (ms *mockSocket) Send(m *transport.Message) error {
|
||||||
select {
|
select {
|
||||||
case <-ms.exit:
|
case <-ms.exit:
|
||||||
@ -93,10 +104,12 @@ func (m *mockListener) Accept(fn func(transport.Socket)) error {
|
|||||||
return nil
|
return nil
|
||||||
case c := <-m.conn:
|
case c := <-m.conn:
|
||||||
go fn(&mockSocket{
|
go fn(&mockSocket{
|
||||||
lexit: c.lexit,
|
lexit: c.lexit,
|
||||||
exit: c.exit,
|
exit: c.exit,
|
||||||
send: c.recv,
|
send: c.recv,
|
||||||
recv: c.send,
|
recv: c.send,
|
||||||
|
local: c.Remote(),
|
||||||
|
remote: c.Local(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -118,10 +131,12 @@ func (m *mockTransport) Dial(addr string, opts ...transport.DialOption) (transpo
|
|||||||
|
|
||||||
client := &mockClient{
|
client := &mockClient{
|
||||||
&mockSocket{
|
&mockSocket{
|
||||||
send: make(chan *transport.Message),
|
send: make(chan *transport.Message),
|
||||||
recv: make(chan *transport.Message),
|
recv: make(chan *transport.Message),
|
||||||
exit: make(chan bool),
|
exit: make(chan bool),
|
||||||
lexit: listener.exit,
|
lexit: listener.exit,
|
||||||
|
local: addr,
|
||||||
|
remote: addr,
|
||||||
},
|
},
|
||||||
options,
|
options,
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ type Message struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Socket interface {
|
type Socket interface {
|
||||||
|
Local() string
|
||||||
|
Remote() string
|
||||||
Recv(*Message) error
|
Recv(*Message) error
|
||||||
Send(*Message) error
|
Send(*Message) error
|
||||||
Close() error
|
Close() error
|
||||||
|
Loading…
Reference in New Issue
Block a user