[Libreoffice-commits] online.git: Changes to 'private/Ashod/nonblocking'
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Feb 13 06:41:17 UTC 2017
New branch 'private/Ashod/nonblocking' available with the following commits:
commit bbb38c39c9738738597f4c13788e79a0ebca4f44
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Mon Feb 13 00:40:03 2017 -0500
nb: gitingore loolnb
Change-Id: I41ed294ce61cb92af065d9fc72e3b35a20be0012
commit 2c431de2089a0c5897d951768996744ee42fdbeb
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Feb 12 15:54:49 2017 -0500
nb: support N clients and asynchronously communicate with all
Change-Id: I81f63895180141e554072b6cf5300139299f282c
commit 50338452c405c0fee0f243cba498c1179945c367
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Feb 12 14:44:14 2017 -0500
nb: poll using multi-socket poll class SocketPoll
Change-Id: If244c4ec92f70fd458665b88d4da3c5fbcb11077
commit 4fc1464f84312abe25198f23b102e62fa89915ca
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Feb 12 14:26:42 2017 -0500
nb: SocketPoll class to poll events on N-Sockets
Internally SocketPoll manages the sockets
and handles the polling and firing of callback.
It's thread-safe and handles asynchronous calls
to remove sockets correctly while potentially
being in poll(2).
The choice for using poll(2) compared to epoll
or select are the following:
1. For our use-case, poll(2) works great up to
a few hundred sockets, which we don't expect
to have on a single document normally.
2. select(2) has an awkward API (modifies input,
f.e) and has limit on max fds that we need to
be mindful of (even if we'll not hit it in
practice). poll(2) preserves the input and has
a no-nonsense API that's simple and readable.
3. While select(2) is the most portable, poll(2)
isn't far behind. Yet in practice we'll probably
not support other systems than Linux.
4. epoll(2) starts to scale with hundreds or
thousands of sockets. Meanwhile, it has high
overhead to adding/removing sockets (context
switch to kernel and back). Our typical case
will have a handful to a dozen sockets.
Hardly a justification for epoll's heavy guns.
Change-Id: Idf88257ea85e061a37af29eed21e38655ff43c9b
commit 104fa19de0f799e3dc0827e19522c709fda2fee9
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Feb 12 00:43:19 2017 -0500
nb: ping-pong messages between client and server
Change-Id: I3856dde09764075a138e8574520487e6e5accd90
commit 47cda23d143a8db1ef7d5fb83edadd996709e678
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 23:47:41 2017 -0500
nb: Socket connect supports waiting with timeout
Change-Id: Ib2d713d68f3a27067b121adb356188a164da4589
commit 1fa95d8e4f83d84860f415582d0ad5c921dba83a
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 23:48:21 2017 -0500
nb: server now accepts asynchronously
Change-Id: Ic98f31d4f432fc8a06690b94899314b7c9106c69
commit 400614854051b40ddda1bb045e44af22b8cd00fe
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 23:36:53 2017 -0500
nb: connect and read asynchronously
Change-Id: I04733f8dbf06f5f31e6b05e7f017ef75c629a015
commit 0657942c95817042e52a07825c7c16373525084f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 23:35:22 2017 -0500
nb: add polling to Socket
Change-Id: Ie3fd1f271d9c6fa24e8583316e68a443489d1967
commit 9cfa78cbfb8f2bd6471675d22b0905480a278f79
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 23:33:51 2017 -0500
nb: add socket error getter
Change-Id: Ia0dfd1d6e6bfd2b34b5a9b01c883d78f9bb15e7d
commit f3131db126ff5f985ef9a5280c846bf8d65f3e63
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 20:00:53 2017 -0500
nb: Socket fd member is const
Change-Id: Icc7f4d9bbd15ce0feb3a58339771fbfd168e20e5
commit 1bac06baade6e2bc83d93b789120191f38348a18
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 18:37:56 2017 -0500
nb: add recv and client connection
Change-Id: I311a475428ff410ca26f6049d5371943aa88cc59
commit 2de3540b58978b16eb9f7c68f9d9825ee35de548
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 18:21:57 2017 -0500
nb: accept connections and send
Change-Id: Ie99b8c15e097fcaca0675aba11e11a11c2e7098f
commit 1bba7d05f83a205d5033f9e5c8d9546d94517c9e
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 18:17:09 2017 -0500
nb: bind reuses address automatically
This is virtually always desirable, since
without it we may fail to bind after recycling
if the previous socket is TIME_WAIT.
However, if a socket is bound to same address
this will not prevent the failure to bind,
and we'll detect that the address/port is busy.
So the advantage is in minimizing recycling time.
Change-Id: Ib3bbbf7065f9822acfbd2d7f8ff3e8951739c0ef
commit 185e0c7ce917616e013c226e281b1279fb2464de
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 18:16:39 2017 -0500
nb: Socket doesn't throw on failures and better doc
Change-Id: I125c417c5d9e1a3f40ec386f4871bf6cf2c56ac8
commit 6083c5c14c679bcb3bc42f010d41e9b1cb1c9460
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 16:19:29 2017 -0500
nb: Socket supports listen and accept
Change-Id: I210ee7843f9ff977fde719773b920f1c9c720598
commit 7406d0665b90e08589a699a44c5a379ec9b91af3
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 15:13:14 2017 -0500
nb: add Socket class
The new socket class is implicitly
non-blocking, streaming, ipv4 socket.
Ipv6 to be added later, as necessary.
Change-Id: I722cc63ea97394d47a50b733c58a69cc1529d815
commit b66edf67bf230a8a118f288183222514620d87f3
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Feb 11 12:13:31 2017 -0500
nb: add new loolnb program
Change-Id: Ib08ff3cdc037876e9c53b87603140b3c603ee916
More information about the Libreoffice-commits
mailing list