Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Issue 613683006: Add TCP socket mojo interfaces (Closed)

Created:
6 years, 2 months ago by brettw
Modified:
6 years, 2 months ago
CC:
chromium-reviews, qsr+mojo_chromium.org, viettrungluu+watch_chromium.org, yzshen+watch_chromium.org, abarth-chromium, Aaron Boodman, darin (slow to review), ben+mojo_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

Add TCP socket mojo interfaces BUG= Committed: https://crrev.com/c103dc5243dba96e245bf7e0559f7c4d3b3ab574 Cr-Commit-Position: refs/heads/master@{#297907}

Patch Set 1 #

Total comments: 6

Patch Set 2 : BSD like #

Total comments: 9

Patch Set 3 : listen #

Patch Set 4 : comments #

Total comments: 4

Patch Set 5 : only local bound addr #

Total comments: 19

Patch Set 6 : #

Total comments: 1

Patch Set 7 : Remove all options #

Patch Set 8 : split it apart #

Total comments: 3

Patch Set 9 : Added todo for Darin's suggestion. #

Patch Set 10 : Implement network service functions #

Total comments: 12
Unified diffs Side-by-side diffs Delta from patch set Stats (+161 lines, -4 lines) Patch
M mojo/mojo_services.gypi View 1 2 3 4 5 6 7 1 chunk +3 lines, -0 lines 0 comments Download
M mojo/services/network/network_service_impl.h View 1 2 3 4 5 6 7 8 9 1 chunk +13 lines, -3 lines 0 comments Download
M mojo/services/network/network_service_impl.cc View 1 2 3 4 5 6 7 8 9 1 chunk +18 lines, -0 lines 0 comments Download
M mojo/services/public/interfaces/network/BUILD.gn View 1 2 3 4 5 6 7 1 chunk +3 lines, -0 lines 0 comments Download
M mojo/services/public/interfaces/network/network_service.mojom View 1 2 3 4 5 6 7 8 2 chunks +35 lines, -1 line 6 comments Download
A mojo/services/public/interfaces/network/tcp_bound_socket.mojom View 1 2 3 4 5 6 7 1 chunk +39 lines, -0 lines 2 comments Download
A mojo/services/public/interfaces/network/tcp_client_socket.mojom View 1 2 3 4 5 6 7 1 chunk +16 lines, -0 lines 3 comments Download
A mojo/services/public/interfaces/network/tcp_server_socket.mojom View 1 2 3 4 5 6 7 1 chunk +34 lines, -0 lines 1 comment Download

Messages

Total messages: 59 (8 generated)
brettw
Initial pass for discussion. Having DataPipe be separate makes this surprisingly simple, so +1 for ...
6 years, 2 months ago (2014-09-29 23:41:28 UTC) #2
viettrungluu
https://codereview.chromium.org/613683006/diff/1/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/1/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode19 mojo/services/public/interfaces/network/tcp_socket.mojom:19: // implicitly closes when the TCPSocket has been deleted. ...
6 years, 2 months ago (2014-09-29 23:50:14 UTC) #3
yzshen1
Btw, rsleevi think we should ask the net-dev@ whether the approach of providing a bunch ...
6 years, 2 months ago (2014-09-30 00:21:52 UTC) #4
brettw
Darin's recommendation is to go with more of a BSD-like approach (this one is incompatible). ...
6 years, 2 months ago (2014-09-30 05:21:06 UTC) #5
brettw
PTAL. The new patch is more like BSD sockets, where a TCPSocket is the same ...
6 years, 2 months ago (2014-09-30 17:00:06 UTC) #6
yzshen1
https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode26 mojo/services/public/interfaces/network/tcp_socket.mojom:26: // 1. Listen() to wait for an incoming connection. ...
6 years, 2 months ago (2014-09-30 18:21:41 UTC) #7
brettw
What do you think about adding a ListenOn() function that binds and starts listening? This ...
6 years, 2 months ago (2014-09-30 19:17:48 UTC) #8
viettrungluu
https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode15 mojo/services/public/interfaces/network/tcp_socket.mojom:15: // Represents a TCP socket. A socket can represent ...
6 years, 2 months ago (2014-09-30 19:22:15 UTC) #9
brettw
On 2014/09/30 19:22:15, viettrungluu wrote: > https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom > File mojo/services/public/interfaces/network/tcp_socket.mojom (right): > > https://codereview.chromium.org/613683006/diff/20001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode15 > ...
6 years, 2 months ago (2014-09-30 19:25:24 UTC) #10
yzshen1
And maybe we should consider adding some networking experts to review the API. :) Thanks! ...
6 years, 2 months ago (2014-09-30 20:26:13 UTC) #11
brettw
https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode35 mojo/services/public/interfaces/network/tcp_socket.mojom:35: Bind(NetAddress addr) => (NetworkError result, TCPSocketInfo? info); I changed ...
6 years, 2 months ago (2014-09-30 20:32:14 UTC) #12
brettw
+Sleevi if he cares.
6 years, 2 months ago (2014-09-30 20:32:32 UTC) #14
viettrungluu
https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode74 mojo/services/public/interfaces/network/tcp_socket.mojom:74: SetCoaleseWrites(bool coalesce); Having a setter but no getter seems ...
6 years, 2 months ago (2014-09-30 20:34:41 UTC) #15
Ryan Sleevi
Thanks. I looped this into a thread on net-dev@ where we were discussing yzshen's UDP ...
6 years, 2 months ago (2014-09-30 20:39:27 UTC) #16
brettw
It's fine to wait a few days for this.
6 years, 2 months ago (2014-09-30 20:40:30 UTC) #17
brettw
https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/60001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode74 mojo/services/public/interfaces/network/tcp_socket.mojom:74: SetCoaleseWrites(bool coalesce); My plan was to use the mojo ...
6 years, 2 months ago (2014-09-30 20:44:15 UTC) #18
Ryan Sleevi
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode35 mojo/services/public/interfaces/network/tcp_socket.mojom:35: // success, built_to will indicate the local address that ...
6 years, 2 months ago (2014-09-30 20:48:08 UTC) #19
brettw
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode44 mojo/services/public/interfaces/network/tcp_socket.mojom:44: Listen(int32 backlog) => (NetworkError result); On 2014/09/30 20:48:08, Ryan ...
6 years, 2 months ago (2014-09-30 21:06:17 UTC) #20
viettrungluu
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode44 mojo/services/public/interfaces/network/tcp_socket.mojom:44: Listen(int32 backlog) => (NetworkError result); On 2014/09/30 21:06:17, brettw ...
6 years, 2 months ago (2014-09-30 21:25:48 UTC) #21
Ryan Sleevi
Regarding dynamic adjustment of pending sockets: Turns out I was misremembering the details of Windows' ...
6 years, 2 months ago (2014-09-30 21:35:29 UTC) #22
brettw
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode43 mojo/services/public/interfaces/network/tcp_socket.mojom:43: // happen when connections are incoming faster than Accept() ...
6 years, 2 months ago (2014-09-30 21:50:43 UTC) #23
brettw
On 2014/09/30 21:25:48, viettrungluu wrote: > https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom > File mojo/services/public/interfaces/network/tcp_socket.mojom (right): > > https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode44 > ...
6 years, 2 months ago (2014-09-30 21:51:45 UTC) #24
brettw
6 years, 2 months ago (2014-09-30 21:51:53 UTC) #25
willchan no longer on Chromium
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode70 mojo/services/public/interfaces/network/tcp_socket.mojom:70: Close(); On 2014/09/30 20:48:08, Ryan Sleevi wrote: > You'll ...
6 years, 2 months ago (2014-09-30 22:03:14 UTC) #27
brettw
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode44 mojo/services/public/interfaces/network/tcp_socket.mojom:44: Listen(int32 backlog) => (NetworkError result); The goal is to ...
6 years, 2 months ago (2014-09-30 22:16:18 UTC) #28
Ryan Sleevi
https://codereview.chromium.org/613683006/diff/100001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/100001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode74 mojo/services/public/interfaces/network/tcp_socket.mojom:74: SetCoaleseWrites(bool coalesce); typo: Coalesce That said, in further thinking ...
6 years, 2 months ago (2014-10-01 03:54:01 UTC) #29
Ryan Sleevi
https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom File mojo/services/public/interfaces/network/tcp_socket.mojom (right): https://codereview.chromium.org/613683006/diff/80001/mojo/services/public/interfaces/network/tcp_socket.mojom#newcode44 mojo/services/public/interfaces/network/tcp_socket.mojom:44: Listen(int32 backlog) => (NetworkError result); On 2014/09/30 22:16:17, brettw ...
6 years, 2 months ago (2014-10-01 04:05:23 UTC) #30
brettw
I would _love_ it if you guys wanted to design the best possible API and ...
6 years, 2 months ago (2014-10-01 04:31:13 UTC) #31
chromium-reviews
Thanks Brett for the useful context. All, it's usually best to assume that if you're ...
6 years, 2 months ago (2014-10-01 04:47:47 UTC) #32
Ryan Sleevi
On Sep 30, 2014 9:47 PM, "Ben Goodger" <beng@google.com> wrote: > > Thanks Brett for ...
6 years, 2 months ago (2014-10-01 05:15:01 UTC) #33
willchan no longer on Chromium
On Tue, Sep 30, 2014 at 10:15 PM, Ryan Sleevi <rsleevi@chromium.org> wrote: > > On ...
6 years, 2 months ago (2014-10-01 05:52:59 UTC) #34
yzshen1
LGTM (Just mean that I don't think I have the knowledge to provide any further ...
6 years, 2 months ago (2014-10-01 06:08:26 UTC) #35
darin (slow to review)
On Tue, Sep 30, 2014 at 10:52 PM, William Chan (ι™ˆζ™Ίζ˜Œ) <willchan@chromium.org> wrote: > On ...
6 years, 2 months ago (2014-10-01 06:10:03 UTC) #36
Ryan Sleevi
I think we are just surprised that it went from a discussion in a room ...
6 years, 2 months ago (2014-10-01 06:22:00 UTC) #37
darin (slow to review)
On Tue, Sep 30, 2014 at 11:21 PM, Ryan Sleevi <rsleevi@chromium.org> wrote: > I think ...
6 years, 2 months ago (2014-10-01 06:55:56 UTC) #38
viettrungluu
I think we all agree there's no reason to panic (yet), and we all want ...
6 years, 2 months ago (2014-10-01 15:45:21 UTC) #39
brettw
New patch. This splits everything apart into separate client and server socket objects, with an ...
6 years, 2 months ago (2014-10-01 23:41:40 UTC) #40
yzshen1
Overall it LGTM just one nit https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom File mojo/services/public/interfaces/network/tcp_bound_socket.mojom (right): https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom#newcode23 mojo/services/public/interfaces/network/tcp_bound_socket.mojom:23: StartListening(TCPServerSocket& server); Does ...
6 years, 2 months ago (2014-10-02 00:21:46 UTC) #41
brettw
https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom File mojo/services/public/interfaces/network/tcp_bound_socket.mojom (right): https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom#newcode23 mojo/services/public/interfaces/network/tcp_bound_socket.mojom:23: StartListening(TCPServerSocket& server); On 2014/10/02 00:21:46, yzshen1 wrote: > Does ...
6 years, 2 months ago (2014-10-02 04:09:30 UTC) #42
yzshen1
On 2014/10/02 04:09:30, brettw wrote: > https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom > File mojo/services/public/interfaces/network/tcp_bound_socket.mojom (right): > > https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/tcp_bound_socket.mojom#newcode23 > ...
6 years, 2 months ago (2014-10-02 04:23:06 UTC) #43
darin (slow to review)
https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/network_service.mojom File mojo/services/public/interfaces/network/network_service.mojom (right): https://codereview.chromium.org/613683006/diff/140001/mojo/services/public/interfaces/network/network_service.mojom#newcode22 mojo/services/public/interfaces/network/network_service.mojom:22: // Creates a TCP socket bound to a given ...
6 years, 2 months ago (2014-10-02 05:14:59 UTC) #45
brettw
I added a todo for Darin's suggestion.
6 years, 2 months ago (2014-10-02 17:58:45 UTC) #46
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/613683006/160001
6 years, 2 months ago (2014-10-02 17:59:43 UTC) #48
commit-bot: I haz the power
Try jobs failed on following builders: android_chromium_gn_compile_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/android_chromium_gn_compile_rel/builds/21121) mac_chromium_compile_dbg on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_compile_dbg/builds/21195)
6 years, 2 months ago (2014-10-02 18:12:48 UTC) #50
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/613683006/180001
6 years, 2 months ago (2014-10-02 19:57:09 UTC) #52
commit-bot: I haz the power
Committed patchset #10 (id:180001) as 32af5e955f7160c802d29b167f5b1f9cdcb76c95
6 years, 2 months ago (2014-10-02 21:31:30 UTC) #53
commit-bot: I haz the power
Patchset 10 (id:??) landed as https://crrev.com/c103dc5243dba96e245bf7e0559f7c4d3b3ab574 Cr-Commit-Position: refs/heads/master@{#297907}
6 years, 2 months ago (2014-10-02 21:32:06 UTC) #54
wtc
Patch set 10 LGTM. https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/interfaces/network/network_service.mojom File mojo/services/public/interfaces/network/network_service.mojom (right): https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/interfaces/network/network_service.mojom#newcode16 mojo/services/public/interfaces/network/network_service.mojom:16: // high-level origin-build requests like ...
6 years, 2 months ago (2014-10-03 22:37:43 UTC) #56
brettw
Will do the rest of the suggestions, thanks! https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/interfaces/network/network_service.mojom File mojo/services/public/interfaces/network/network_service.mojom (right): https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/interfaces/network/network_service.mojom#newcode52 mojo/services/public/interfaces/network/network_service.mojom:52: NetAddress? ...
6 years, 2 months ago (2014-10-03 22:54:45 UTC) #57
willchan no longer on Chromium
Like I said to yzshen, all my comments are non-blocking and asynchronous. Just commenting here ...
6 years, 2 months ago (2014-10-06 21:52:39 UTC) #58
wtc
6 years, 2 months ago (2014-10-07 20:47:45 UTC) #59
Message was sent while issue was closed.
https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/in...
File mojo/services/public/interfaces/network/network_service.mojom (right):

https://codereview.chromium.org/613683006/diff/180001/mojo/services/public/in...
mojo/services/public/interfaces/network/network_service.mojom:52: NetAddress?
local_address);

On 2014/10/03 22:54:44, brettw wrote:
>
> How expensive is this syscall? I did it this way because otherwise getting the
> local address requires an async IPC which is very inconvenient for
applications
> that do want this value.

The getsockname system call should be a simple system call, so the
cost is probably dominated by the user space/kernel context switch.
Getting the local address of such a TCP client socket is an uncommon
operation (does any code in Chromium do this?), so it is fine for it
to be suboptimal.

Powered by Google App Engine
This is Rietveld 408576698