mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	 e8e1f6902e
			
		
	
	
		e8e1f6902e
		
	
	
	
	
		
			
			This XPCOM interface was being initialized and used, and was unnecessary. This patch removes it completely to simplify things, initializing viaduct during xpcom startup instead. This is done rather than keeping it lazy and tied to FOG startup, as the implementation just sets a static atomic to a function pointer. This makes no changes to anything which actually uses viaduct, which is done through the previously mentioned static atomic. Differential Revision: https://phabricator.services.mozilla.com/D162010
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* 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 https://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef mozilla_ViaductRequest_h
 | |
| #define mozilla_ViaductRequest_h
 | |
| 
 | |
| #include "mozilla/Monitor.h"
 | |
| #include "mozilla/fetch_msg_types.pb.h"
 | |
| #include "mozilla/Viaduct.h"
 | |
| 
 | |
| #include "nsCOMPtr.h"
 | |
| #include "nsIChannel.h"
 | |
| #include "nsIChannelEventSink.h"
 | |
| #include "nsIStreamListener.h"
 | |
| #include "nsITimer.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| 
 | |
| // A mapping of the ByteBuffer repr(C) Rust struct.
 | |
| struct ViaductByteBuffer {
 | |
|   int64_t len;
 | |
|   uint8_t* data;
 | |
| };
 | |
| 
 | |
| class ViaductRequest final : public nsIStreamListener,
 | |
|                              public nsITimerCallback,
 | |
|                              public nsINamed,
 | |
|                              public nsIChannelEventSink {
 | |
|  public:
 | |
|   NS_DECL_THREADSAFE_ISUPPORTS
 | |
|   NS_DECL_NSIREQUESTOBSERVER
 | |
|   NS_DECL_NSISTREAMLISTENER
 | |
|   NS_DECL_NSITIMERCALLBACK
 | |
|   NS_DECL_NSINAMED
 | |
|   NS_DECL_NSICHANNELEVENTSINK
 | |
| 
 | |
|   ViaductRequest()
 | |
|       : mDone(false), mChannel(nullptr), mMonitor("ViaductRequest") {}
 | |
|   ViaductByteBuffer MakeRequest(ViaductByteBuffer reqBuf);
 | |
| 
 | |
|  private:
 | |
|   nsresult LaunchRequest(appservices::httpconfig::protobuf::Request&);
 | |
|   void ClearTimers();
 | |
|   void NotifyMonitor();
 | |
|   bool mDone;
 | |
|   nsCOMPtr<nsIChannel> mChannel;
 | |
|   nsCString mBodyBuffer;
 | |
|   nsCOMPtr<nsITimer> mConnectTimeoutTimer;
 | |
|   nsCOMPtr<nsITimer> mReadTimeoutTimer;
 | |
|   appservices::httpconfig::protobuf::Response mResponse;
 | |
|   Monitor mMonitor MOZ_UNANNOTATED;
 | |
|   ~ViaductRequest();
 | |
| };
 | |
| 
 | |
| };  // namespace mozilla
 | |
| 
 | |
| #endif  // mozilla_ViaductRequest_h
 |