forked from mirrors/gecko-dev
		
	 1a1f42da37
			
		
	
	
		1a1f42da37
		
	
	
	
	
		
			
			This changeset is the result of adding modernize-use-default-member-init to tools/clang-tidy/config.yaml then proceeding to run `./mach static-analysis check netwerk/ --fix` I then went through the resulting fix and manually updated all of the member variables which were missed due to them having a non-trivial constructor. Note that the tool was only run on Linux, so code that only runs on some platforms may have been missed. The member variables that are still initialized in the contructor definition are: - bitfields (not all currently supported compilers allow default-member-init - variables that are initialized via a parameter - variables that use code not visible in the header file There are a few advantages to landing this change: - fewer lines of code - now declaration is in the same place as initialization this also makes it easier to see when looking at the header. - it makes it harder to miss initializing a member when adding a new contructor - variables that depend on an include guard look much nicer now Additionally I removed some unnecessary reinitialization of NetAddr members (it has a constructor that does that now), and changed nsWifiScannerDBus to use the thread-safe strtok_r instead of strtok. Differential Revision: https://phabricator.services.mozilla.com/D116980
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef nsInputStreamPump_h__
 | |
| #define nsInputStreamPump_h__
 | |
| 
 | |
| #include "nsIInputStreamPump.h"
 | |
| #include "nsIAsyncInputStream.h"
 | |
| #include "nsIThreadRetargetableRequest.h"
 | |
| #include "nsCOMPtr.h"
 | |
| #include "mozilla/Attributes.h"
 | |
| #include "mozilla/RecursiveMutex.h"
 | |
| 
 | |
| class nsIInputStream;
 | |
| class nsILoadGroup;
 | |
| class nsIStreamListener;
 | |
| 
 | |
| #define NS_INPUT_STREAM_PUMP_IID                     \
 | |
|   {                                                  \
 | |
|     0x42f1cc9b, 0xdf5f, 0x4c9b, {                    \
 | |
|       0xbd, 0x71, 0x8d, 0x4a, 0xe2, 0x27, 0xc1, 0x8a \
 | |
|     }                                                \
 | |
|   }
 | |
| 
 | |
| class nsInputStreamPump final : public nsIInputStreamPump,
 | |
|                                 public nsIInputStreamCallback,
 | |
|                                 public nsIThreadRetargetableRequest {
 | |
|   ~nsInputStreamPump() = default;
 | |
| 
 | |
|  public:
 | |
|   using RecursiveMutexAutoLock = mozilla::RecursiveMutexAutoLock;
 | |
|   using RecursiveMutexAutoUnlock = mozilla::RecursiveMutexAutoUnlock;
 | |
|   NS_DECL_THREADSAFE_ISUPPORTS
 | |
|   NS_DECL_NSIREQUEST
 | |
|   NS_DECL_NSIINPUTSTREAMPUMP
 | |
|   NS_DECL_NSIINPUTSTREAMCALLBACK
 | |
|   NS_DECL_NSITHREADRETARGETABLEREQUEST
 | |
|   NS_DECLARE_STATIC_IID_ACCESSOR(NS_INPUT_STREAM_PUMP_IID)
 | |
| 
 | |
|   nsInputStreamPump();
 | |
| 
 | |
|   static nsresult Create(nsInputStreamPump** result, nsIInputStream* stream,
 | |
|                          uint32_t segsize = 0, uint32_t segcount = 0,
 | |
|                          bool closeWhenDone = false,
 | |
|                          nsIEventTarget* mainThreadTarget = nullptr);
 | |
| 
 | |
|   using PeekSegmentFun = void (*)(void*, const uint8_t*, uint32_t);
 | |
|   /**
 | |
|    * Peek into the first chunk of data that's in the stream. Note that this
 | |
|    * method will not call the callback when there is no data in the stream.
 | |
|    * The callback will be called at most once.
 | |
|    *
 | |
|    * The data from the stream will not be consumed, i.e. the pump's listener
 | |
|    * can still read all the data.
 | |
|    *
 | |
|    * Do not call before asyncRead. Do not call after onStopRequest.
 | |
|    */
 | |
|   nsresult PeekStream(PeekSegmentFun callback, void* closure);
 | |
| 
 | |
|   /**
 | |
|    * Dispatched (to the main thread) by OnStateStop if it's called off main
 | |
|    * thread. Updates mState based on return value of OnStateStop.
 | |
|    */
 | |
|   nsresult CallOnStateStop();
 | |
| 
 | |
|  protected:
 | |
|   enum { STATE_IDLE, STATE_START, STATE_TRANSFER, STATE_STOP };
 | |
| 
 | |
|   nsresult EnsureWaiting();
 | |
|   uint32_t OnStateStart();
 | |
|   uint32_t OnStateTransfer();
 | |
|   uint32_t OnStateStop();
 | |
|   nsresult CreateBufferedStreamIfNeeded();
 | |
| 
 | |
|   uint32_t mState{STATE_IDLE};
 | |
|   nsCOMPtr<nsILoadGroup> mLoadGroup;
 | |
|   nsCOMPtr<nsIStreamListener> mListener;
 | |
|   nsCOMPtr<nsIEventTarget> mTargetThread;
 | |
|   nsCOMPtr<nsIEventTarget> mLabeledMainThreadTarget;
 | |
|   nsCOMPtr<nsIInputStream> mStream;
 | |
|   nsCOMPtr<nsIAsyncInputStream> mAsyncStream;
 | |
|   uint64_t mStreamOffset{0};
 | |
|   uint64_t mStreamLength{0};
 | |
|   uint32_t mSegSize{0};
 | |
|   uint32_t mSegCount{0};
 | |
|   nsresult mStatus{NS_OK};
 | |
|   uint32_t mSuspendCount{0};
 | |
|   uint32_t mLoadFlags{LOAD_NORMAL};
 | |
|   bool mIsPending{false};
 | |
|   // True while in OnInputStreamReady, calling OnStateStart, OnStateTransfer
 | |
|   // and OnStateStop. Used to prevent calls to AsyncWait during callbacks.
 | |
|   bool mProcessingCallbacks{false};
 | |
|   // True if waiting on the "input stream ready" callback.
 | |
|   bool mWaitingForInputStreamReady{false};
 | |
|   bool mCloseWhenDone{false};
 | |
|   bool mRetargeting{false};
 | |
|   bool mAsyncStreamIsBuffered{false};
 | |
|   // Indicate whether nsInputStreamPump is used completely off main thread.
 | |
|   // If true, OnStateStop() is executed off main thread.
 | |
|   bool mOffMainThread;
 | |
|   // Protects state/member var accesses across multiple threads.
 | |
|   mozilla::RecursiveMutex mMutex{"nsInputStreamPump"};
 | |
| };
 | |
| 
 | |
| NS_DEFINE_STATIC_IID_ACCESSOR(nsInputStreamPump, NS_INPUT_STREAM_PUMP_IID)
 | |
| 
 | |
| #endif  // !nsInputStreamChannel_h__
 |