Commit Graph

59 Commits

Author SHA1 Message Date
Honza Bambas
2c84f607c4 Bug 1446117 - Make sure we also mark timeout epoch on a network socket when we are polling it for read/write, fix regression from bug 1444160. r=valentin 2018-03-19 07:48:00 -04:00
Honza Bambas
be8c631117 Bug 1444160 - Fix calculation of network socket timeout logic. r=valentin, mayhemer 2018-03-12 07:00:00 +02:00
Dragana Damjanovic
f337579c17 Bug 1404069 - Revert bug 1363372. r=mayhemer 2017-11-27 21:12:31 +01:00
Bill McCloskey
e1b7db0651 Bug 1382922 - Refactor event queue to allow multiple implementations (r=erahm)
This patch refactors the nsThread event queue to clean it up and to make it easier to restructure. The fundamental concepts are as follows:

Each nsThread will have a pointer to a refcounted SynchronizedEventQueue. A SynchronizedEQ takes care of doing the locking and condition variable work when posting and popping events. For the actual storage of events, it delegates to an AbstractEventQueue data structure. It keeps a UniquePtr to the AbstractEventQueue that it uses for storage.

Both SynchronizedEQ and AbstractEventQueue are abstract classes. There is only one concrete implementation of SynchronizedEQ in this patch, which is called ThreadEventQueue. ThreadEventQueue uses locks and condition variables to post and pop events the same way nsThread does. It also encapsulates the functionality that DOM workers need to implement their special event loops (PushEventQueue and PopEventQueue). In later Quantum DOM work, I plan to have another SynchronizedEQ implementation for the main thread, called SchedulerEventQueue. It will have special code for the cooperatively scheduling threads in Quantum DOM.

There are two concrete implementations of AbstractEventQueue in this patch: EventQueue and PrioritizedEventQueue. EventQueue replaces the old nsEventQueue. The other AbstractEventQueue implementation is PrioritizedEventQueue, which uses multiple queues for different event priorities.

The final major piece here is ThreadEventTarget, which splits some of the code for posting events out of nsThread. Eventually, my plan is for multiple cooperatively scheduled nsThreads to be able to share a ThreadEventTarget. In this patch, though, each nsThread has its own ThreadEventTarget. The class's purpose is just to collect some related code together.

One final note: I tried to avoid virtual dispatch overhead as much as possible. Calls to SynchronizedEQ methods do use virtual dispatch, since I plan to use different implementations for different threads with Quantum DOM. But all the calls to EventQueue methods should be non-virtual. Although the methods are declared virtual, all the classes used are final and the concrete classes involved should all be known through templatization.

MozReview-Commit-ID: 9Evtr9oIJvx
2017-08-16 20:55:43 -07:00
Dragana Damjanovic
0dab63a969 Bug 1363372 - Wait until OVERLAPPED structure return a result before distroying a socket. r=mcmanus 2017-07-27 11:37:11 +02:00
Sylvestre Ledru
9d4a84d778 Bug 1378712 - Remove all trailing whitespaces r=Ehsan
MozReview-Commit-ID: Kdz2xtTF9EG
2017-07-06 14:00:35 +02:00
Bill McCloskey
cd4311a2d6 Bug 1366869 - Make DISPATCH_NORMAL be the default flags argument for nsIEventTarget::Dispatch (r=froydnj)
MozReview-Commit-ID: 5DVcIaMHH95
2017-05-23 12:05:43 -07:00
Nathan Froyd
a3cd9ee75a Bug 1360236 - make gSocketThread an internal implementation detail of nsSocketTransportService; r=mcmanus
This change makes the code a little cleaner and reduces the number of
places we call PR_GetCurrentThread, which is important for Quantum DOM
scheduling work.

The conversion was largely automatic, via:

find netwerk/ -name \*.cpp | \
  xargs sed -i -e 's/MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread[^;]*/MOZ_ASSERT(OnSocketThread(), "not on socket thread")/'

and related invocations, with a few manual tweaks at the end.
2017-04-27 14:34:42 -04:00
Andrew Osmond
068f53bff3 Bug 1275464 - Part 2. Move socket transport service thread shutdown to xpcom-shutdown-threads. r=dragana 2016-09-19 13:29:59 -04:00
Dragana Damjanovic
2816859bcc Bug 1294032 - Fix poll hang - on shutdown hang in poll post event multiple times. r=mcmanus 2016-09-13 04:43:00 -04:00
Ralph Giles
3722053e86 Bug 1275744 - Reference MOZ_LOG in netwerk comments. r=erahm
NSPR_LOG_MODULES is deprecated.

Programs in the test directory still use PR_NewLogModule,
so NSPR_LOG_MODULES is accurate for them. Getting these
to link against libxul for LazyLogModule is still to do,
so leave those for now.

MozReview-Commit-ID: 3uMR3YPJyyi
2016-05-25 16:13:54 -07:00
Patrick McManus
b5a9ab0c78 Bug 1202468 - remove mPendingQ lock r=dragana 2016-05-23 12:20:58 -04:00
Patrick McManus
e01f1d0309 Bug 1274376 - more mozilla::net namespaces r=dragana 2016-05-18 22:02:57 -04:00
Patrick McManus
9d865638fb Bug 1135104 - increase send window on modern windows r=dragana 2016-05-11 05:31:01 -04:00
Patrick McManus
b65a962481 Bug 1236969 - remove autodialer r=valentin 2016-02-19 14:33:59 -05:00
Patrick McManus
70f8c01aef Bug 1260218 - SocketTransportService socket expansion r=dragana 2016-03-23 20:44:28 -04:00
Patrick McManus
d1e5396343 Bug 698882 - mozilla::net::PollableEvent r=dragana r=mayhemer 2016-03-22 11:02:39 -04:00
Dragana Damjanovic
fa8031ea15 Bug 1257809 - "Improve telemetry for PR_Connect". r=mcmanus 2016-03-19 04:25:00 +01:00
Patrick McManus
fe03a14da2 Bug 698882 - backout 34046c232ee1 r=backout 2016-03-23 13:06:02 -04:00
Patrick McManus
98daa85580 Bug 698882 - mozilla::net::PollableEvent r=dragana r=mayhemer 2016-03-22 11:02:39 -04:00
Phil Ringnalda
cb131da50b Back out changeset 06e41d2080a2 (bug 698882) for (at least) 10.6 leaks including PollableEvent
CLOSED TREE
2016-03-20 17:24:48 -07:00
Patrick McManus
6f9cb5886d Bug 698882 - mozilla::net::PollableEvent r=dragana r=mayhemer 2016-02-11 15:00:22 -05:00
Patrick McManus
ab7c6ebead Bug 698882 - backout threadevent changes due to crashes with McAfee Firefox Hook r=backout 2016-02-21 17:41:21 -05:00
Patrick McManus
8bcce717c3 Bug 698882 - mozilla::net::PollableEvent r=dragana r=mayhemer 2016-02-11 15:00:22 -05:00
Dragana Damjanovic
47e63d77cd Bug 1240481 - Limit PR_Close calls during shutdown. r=mcmanus 2016-01-18 08:20:00 +01:00
Xidorn Quan
ba6b6b195b Bug 1238404 - Use 'using' directive instead of having separate Dispatch impl in subclasses of nsIEventTarget. r=froydnj 2016-01-12 15:18:47 +11:00
Nathan Froyd
638feef71b Bug 1219910 - make gSocketThread a relaxed atomic variable; r=mcmanus
Many places that (re-)declared gSocketThread already included
nsSocketTransportService2.h; we can delete the declaration for those
places.  For all the other places, we need to include
nsSocketTransportService2.h.
2015-11-06 12:00:37 -05:00
Patrick McManus
050f902acb bug 1219466 - convert netwerk to LazyLogModule r=valentin.gosu 2015-11-02 23:35:29 -05:00
Carsten "Tomcat" Book
324de9933c Backed out changeset 2a233dadfc49 (bug 1219910) for bustage on a CLOSED TREE 2015-10-30 16:09:19 +01:00
Nathan Froyd
649ed26763 Bug 1219910 - make gSocketThread a relaxed atomic variable; r=mcmanus
All the places that (re-)declared gSocketThread already included
nsSocketTransportService2.h, so we can safely delete them.
2015-10-29 16:47:23 -04:00
Nathan Froyd
dcd71d96d7 Bug 1202497 - part 6 - make the locking requirements of nsEventQueue explicit; r=gerald
Like the previous patch, this patch is a no-op change in terms of
functionality.  It does, however, pave part of the way for forcing
clients of nsEventQueue to provide their own locking.
2015-09-21 04:34:51 -04:00
Dragana Damjanovic
2de037fcd4 Bug 1204529 - mMaxTimePerPollIter should be atomic. r=mcmanus 2015-09-16 10:23:00 +02:00
Dragana Damjanovic
ab4e83f3ba Bug 1204043 - remove mServeMultipleEventsPerPollIter pref. r=mcmanus 2015-09-15 05:10:00 +02:00
Nathan Froyd
c1c308387d Bug 1204042 - make nsSocketTransportService::mTelemetryEnabledPref an atomic variable; r=mcmanus
This variable is written on the main thread (where we can access prefs),
but read on the socket thread on every poll iteration to decide whether
we should record telemetry information.  Making it atomic communicates
our intent to read/write the value on multiple threads without any
locking.  Using relaxed memory consistency is just as efficient as what
we have today, and it does not seem terribly crucial whether the *very
next* poll iteration records telemetry once the pref is updated, or
whether we can eventually get the correct value on the socket thread.
2015-09-11 21:03:53 -04:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Randell Jesup
9212636903 Bug 1155059: Patch 1&2 - Convert Dispatch() and friends to already_AddRefed<> r=froydnj
Modify Dispatch IDL and code to deal with MSVC issues with overloaded templates r=froydnj
2015-07-09 23:21:46 -04:00
Dragana Damjanovic
0e1e345def Bug 1177848 - Add telemetry to measure ipv6 miss and hits. r=mcmanus 2015-07-01 13:51:00 +02:00
Eric Rahm
900b3ebc4d Bug 1165515 - Part 13-2: Replace usage of PRLogModuleLevel and PR_LOG_*. rs=froydnj
This is straightforward mapping of PR_LOG levels to their LogLevel
counterparts:
  PR_LOG_ERROR   -> LogLevel::Error
  PR_LOG_WARNING -> LogLevel::Warning
  PR_LOG_WARN    -> LogLevel::Warning
  PR_LOG_INFO    -> LogLevel::Info
  PR_LOG_DEBUG   -> LogLevel::Debug
  PR_LOG_NOTICE  -> LogLevel::Debug
  PR_LOG_VERBOSE -> LogLevel::Verbose

Instances of PRLogModuleLevel were mapped to a fully qualified
mozilla::LogLevel, instances of PR_LOG levels in #defines were mapped to a
fully qualified mozilla::LogLevel::* level, and all other instances were
mapped to us a shorter format of LogLevel::*.

Bustage for usage of the non-fully qualified LogLevel were fixed by adding
|using mozilla::LogLevel;| where appropriate.
2015-06-03 15:25:57 -07:00
Eric Rahm
ab32c89747 Bug 1165515 - Part 3: Convert PR_LOG_TEST to MOZ_LOG_TEST. r=froydnj 2015-06-03 15:22:28 -07:00
Carsten "Tomcat" Book
89becff57d Backed out 14 changesets (bug 1165515) for linux x64 e10s m2 test failures
Backed out changeset d68dcf2ef372 (bug 1165515)
Backed out changeset 7c3b45a47811 (bug 1165515)
Backed out changeset b668b617bef2 (bug 1165515)
Backed out changeset d0916e1283a2 (bug 1165515)
Backed out changeset ac4dc7489942 (bug 1165515)
Backed out changeset e9632ce8bc65 (bug 1165515)
Backed out changeset c16d215cc7e4 (bug 1165515)
Backed out changeset e4d474f3c51a (bug 1165515)
Backed out changeset d87680bf9f7c (bug 1165515)
Backed out changeset b3c0a45ba99e (bug 1165515)
Backed out changeset 9370fa197674 (bug 1165515)
Backed out changeset 50970d668ca1 (bug 1165515)
Backed out changeset ffa4eb6d24b9 (bug 1165515)
Backed out changeset 5fcf1203cc1d (bug 1165515)
2015-06-02 13:05:56 +02:00
Eric Rahm
f5003d5120 Bug 1165515 - Part 13-2: Replace usage of PRLogModuleLevel and PR_LOG_*. rs=froydnj
This is straightforward mapping of PR_LOG levels to their LogLevel
counterparts:
  PR_LOG_ERROR   -> LogLevel::Error
  PR_LOG_WARNING -> LogLevel::Warning
  PR_LOG_WARN    -> LogLevel::Warning
  PR_LOG_INFO    -> LogLevel::Info
  PR_LOG_DEBUG   -> LogLevel::Debug
  PR_LOG_NOTICE  -> LogLevel::Debug
  PR_LOG_VERBOSE -> LogLevel::Verbose

Instances of PRLogModuleLevel were mapped to a fully qualified
mozilla::LogLevel, instances of PR_LOG levels in #defines were mapped to a
fully qualified mozilla::LogLevel::* level, and all other instances were
mapped to us a shorter format of LogLevel::*.

Bustage for usage of the non-fully qualified LogLevel were fixed by adding
|using mozilla::LogLevel;| where appropriate.
2015-06-01 22:17:33 -07:00
Eric Rahm
d6adc10d95 Bug 1165515 - Part 3: Convert PR_LOG_TEST to MOZ_LOG_TEST. r=froydnj 2015-06-01 22:17:19 -07:00
Wes Kocher
2a7ed059f1 Backed out 14 changesets (bug 1165515) for b2g mochitest-6 permafail CLOSED TREE
Backed out changeset 9b97e2aa2ed9 (bug 1165515)
Backed out changeset 150606c022a2 (bug 1165515)
Backed out changeset 4e875a488349 (bug 1165515)
Backed out changeset 467e7feeb546 (bug 1165515)
Backed out changeset d6b6cc373197 (bug 1165515)
Backed out changeset 0615265b593c (bug 1165515)
Backed out changeset fafd1dce9f08 (bug 1165515)
Backed out changeset d1df869245f9 (bug 1165515)
Backed out changeset 6876a7c63611 (bug 1165515)
Backed out changeset b7841c94a9a3 (bug 1165515)
Backed out changeset e5e3617f7c73 (bug 1165515)
Backed out changeset 39be3db95978 (bug 1165515)
Backed out changeset 0ec74176f8de (bug 1165515)
Backed out changeset 5b928dd10d71 (bug 1165515)
2015-06-01 17:57:58 -07:00
Eric Rahm
0baf91e33f Bug 1165515 - Part 13-2: Replace usage of PRLogModuleLevel and PR_LOG_*. rs=froydnj
This is straightforward mapping of PR_LOG levels to their LogLevel
counterparts:
  PR_LOG_ERROR   -> LogLevel::Error
  PR_LOG_WARNING -> LogLevel::Warning
  PR_LOG_WARN    -> LogLevel::Warning
  PR_LOG_INFO    -> LogLevel::Info
  PR_LOG_DEBUG   -> LogLevel::Debug
  PR_LOG_NOTICE  -> LogLevel::Debug
  PR_LOG_VERBOSE -> LogLevel::Verbose

Instances of PRLogModuleLevel were mapped to a fully qualified
mozilla::LogLevel, instances of PR_LOG levels in #defines were mapped to a
fully qualified mozilla::LogLevel::* level, and all other instances were
mapped to us a shorter format of LogLevel::*.

Bustage for usage of the non-fully qualified LogLevel were fixed by adding
|using mozilla::LogLevel;| where appropriate.
2015-06-01 14:31:01 -07:00
Eric Rahm
2ab4a31673 Bug 1165515 - Part 3: Convert PR_LOG_TEST to MOZ_LOG_TEST. r=froydnj 2015-06-01 14:31:00 -07:00
Randell Jesup
177d4c6b92 Bug 1109338: Part 1: Separate UDPSocket logging from network logging r=dragana 2015-05-29 10:13:39 -04:00
Eric Rahm
5b59cf4e0b Bug 1165515 - Part 1: Convert PR_LOG to MOZ_LOG. r=froydnj 2015-05-21 13:22:04 -07:00
Eric Rahm
ddc8ac650b Bug 1165518 - Part 2: Replace prlog.h with Logging.h. rs=froydnj 2015-05-19 11:15:34 -07:00
Eric Rahm
b676a83446 Bug 1162336 - Part 1: Remove instances of #ifdef PR_LOGGING in netwerk. r=froydnj
PR_LOGGING is now always defined, we can remove #ifdefs checking for it.
2015-05-07 12:52:44 -07:00
Wes Kocher
ce92b3fcd9 Backed out 2 changesets (bug 1162336) for breaking at least windows builds
Backed out changeset 8952a7fa4050 (bug 1162336)
Backed out changeset 0170a6c2a5be (bug 1162336)
2015-05-07 11:13:24 -07:00