forked from mirrors/gecko-dev
		
	 e226046cb8
			
		
	
	
		e226046cb8
		
	
	
	
	
		
			
			# ignore-this-changeset Depends on D28954 Differential Revision: https://phabricator.services.mozilla.com/D28956 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 4; 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/. */
 | |
| 
 | |
| #include "nsSimpleStreamListener.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace net {
 | |
| 
 | |
| //
 | |
| //----------------------------------------------------------------------------
 | |
| // nsISupports implementation...
 | |
| //----------------------------------------------------------------------------
 | |
| //
 | |
| NS_IMPL_ISUPPORTS(nsSimpleStreamListener, nsISimpleStreamListener,
 | |
|                   nsIStreamListener, nsIRequestObserver)
 | |
| 
 | |
| //
 | |
| //----------------------------------------------------------------------------
 | |
| // nsIRequestObserver implementation...
 | |
| //----------------------------------------------------------------------------
 | |
| //
 | |
| NS_IMETHODIMP
 | |
| nsSimpleStreamListener::OnStartRequest(nsIRequest* aRequest) {
 | |
|   return mObserver ? mObserver->OnStartRequest(aRequest) : NS_OK;
 | |
| }
 | |
| 
 | |
| NS_IMETHODIMP
 | |
| nsSimpleStreamListener::OnStopRequest(nsIRequest* request, nsresult aStatus) {
 | |
|   return mObserver ? mObserver->OnStopRequest(request, aStatus) : NS_OK;
 | |
| }
 | |
| 
 | |
| //
 | |
| //----------------------------------------------------------------------------
 | |
| // nsIStreamListener implementation...
 | |
| //----------------------------------------------------------------------------
 | |
| //
 | |
| NS_IMETHODIMP
 | |
| nsSimpleStreamListener::OnDataAvailable(nsIRequest* request,
 | |
|                                         nsIInputStream* aSource,
 | |
|                                         uint64_t aOffset, uint32_t aCount) {
 | |
|   uint32_t writeCount;
 | |
|   nsresult rv = mSink->WriteFrom(aSource, aCount, &writeCount);
 | |
|   //
 | |
|   // Equate zero bytes read and NS_SUCCEEDED to stopping the read.
 | |
|   //
 | |
|   if (NS_SUCCEEDED(rv) && (writeCount == 0)) return NS_BASE_STREAM_CLOSED;
 | |
|   return rv;
 | |
| }
 | |
| 
 | |
| //
 | |
| //----------------------------------------------------------------------------
 | |
| // nsISimpleStreamListener implementation...
 | |
| //----------------------------------------------------------------------------
 | |
| //
 | |
| NS_IMETHODIMP
 | |
| nsSimpleStreamListener::Init(nsIOutputStream* aSink,
 | |
|                              nsIRequestObserver* aObserver) {
 | |
|   MOZ_ASSERT(aSink, "null output stream");
 | |
| 
 | |
|   mSink = aSink;
 | |
|   mObserver = aObserver;
 | |
| 
 | |
|   return NS_OK;
 | |
| }
 | |
| 
 | |
| }  // namespace net
 | |
| }  // namespace mozilla
 |