From 6dee439e4e6f686efd6712b339619625cab77d8b Mon Sep 17 00:00:00 2001 From: "gordon%netscape.com" Date: Mon, 27 Mar 2000 22:15:38 +0000 Subject: [PATCH] Landing DNS_CANCEL_BRANCH. Changing locks to monitors in nsSocketTransport. Original changes by warren, r=gagan. --- netwerk/base/src/nsSocketTransport.cpp | 63 +++++++++---------- netwerk/base/src/nsSocketTransport.h | 2 +- netwerk/base/src/nsSocketTransportService.cpp | 3 +- netwerk/base/src/nsSocketTransportService.h | 2 - 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/netwerk/base/src/nsSocketTransport.cpp b/netwerk/base/src/nsSocketTransport.cpp index 34cfd83c6e9..472d2857728 100644 --- a/netwerk/base/src/nsSocketTransport.cpp +++ b/netwerk/base/src/nsSocketTransport.cpp @@ -122,7 +122,7 @@ nsSocketTransport::nsSocketTransport(): mCurrentState(eSocketState_Created), mHostName(nsnull), mLoadAttributes(LOAD_NORMAL), - mLock(nsnull), + mMonitor(nsnull), mOperation(eSocketOperation_None), mPort(0), mPrintHost(nsnull), @@ -219,11 +219,11 @@ nsSocketTransport::~nsSocketTransport() mSocketFD = nsnull; } - if (mLock) { - PR_DestroyLock(mLock); - mLock = nsnull; + if (mMonitor) { + PR_DestroyMonitor(mMonitor); + mMonitor = nsnull; } - + if (mWriteBuffer) { PR_Free(mWriteBuffer); mWriteBuffer = nsnull; @@ -279,8 +279,8 @@ nsresult nsSocketTransport::Init(nsSocketTransportService* aService, // Create the lock used for synchronizing access to the transport instance. // if (NS_SUCCEEDED(rv)) { - mLock = PR_NewLock(); - if (!mLock) { + mMonitor = PR_NewMonitor(); + if (!mMonitor) { rv = NS_ERROR_OUT_OF_MEMORY; } } @@ -302,7 +302,7 @@ nsresult nsSocketTransport::CheckForTimeout(PRIntervalTime aCurrentTime) PRIntervalTime idleInterval; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); idleInterval = aCurrentTime - mLastActiveTime; @@ -333,7 +333,7 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags) // Enter the socket transport lock... // This lock protects access to socket transport member data... // - PR_Lock(mLock); + PR_EnterMonitor(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::Process() [%s:%d %x].\t" @@ -409,7 +409,6 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags) // // A connection has been established with the server // - mSelectFlags = PR_POLL_EXCEPT; if (GetReadType() != eSocketRead_None) { @@ -599,7 +598,7 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags) "CurrentState = %d\n\n", mHostName, mPort, this, mStatus, mCurrentState)); - PR_Unlock(mLock); + PR_ExitMonitor(mMonitor); return mStatus; } @@ -649,14 +648,14 @@ nsresult nsSocketTransport::doResolveHost(void) // Give up the SocketTransport lock. This allows the DNS thread to call the // nsIDNSListener notifications without blocking... // - PR_Unlock(mLock); + PR_ExitMonitor(mMonitor); - rv = pDNSService->Lookup(nsnull, mHostName, this, + rv = pDNSService->Lookup(mHostName, this, nsnull, getter_AddRefs(mDNSRequest)); // // Aquire the SocketTransport lock again... // - PR_Lock(mLock); + PR_EnterMonitor(mMonitor); if (NS_SUCCEEDED(rv)) { // @@ -979,10 +978,10 @@ nsresult nsSocketTransport::doRead(PRInt16 aSelectFlags) // lock which could cause a deadlock by blocking the socket transport // thread // - PR_Unlock(mLock); + PR_ExitMonitor(mMonitor); rv = mReadPipeOut->WriteSegments(nsReadFromSocket, (void*)&info, MAX_IO_TRANSFER_SIZE, &totalBytesWritten); - PR_Lock(mLock); + PR_EnterMonitor(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("WriteSegments [fd=%x]. rv = %x. Bytes read =%d\n", @@ -1146,7 +1145,7 @@ nsresult nsSocketTransport::doWriteFromBuffer(PRUint32 *aCount) // lock which could cause a deadlock by blocking the socket transport // thread // - PR_Unlock(mLock); + PR_ExitMonitor(mMonitor); // // Write the data to the network... @@ -1158,7 +1157,7 @@ nsresult nsSocketTransport::doWriteFromBuffer(PRUint32 *aCount) // rv = mWritePipeIn->ReadSegments(nsWriteToSocket, (void*)mSocketFD, transferCount, aCount); - PR_Lock(mLock); + PR_EnterMonitor(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("ReadSegments [fd=%x]. rv = %x. Bytes written =%d\n", @@ -1324,7 +1323,7 @@ nsSocketTransport::GetBytesExpected (PRInt32 * bytes) NS_IMETHODIMP nsSocketTransport::SetBytesExpected (PRInt32 bytes) { - nsAutoLock alock (mLock); + nsAutoMonitor mon(mMonitor); if (mCurrentState == eSocketState_WaitReadWrite) { @@ -1364,7 +1363,7 @@ nsSocketTransport::Cancel(void) nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); mCancelOperation = PR_TRUE; // @@ -1386,7 +1385,7 @@ nsSocketTransport::Suspend(void) nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); mSuspendCount += 1; // @@ -1414,7 +1413,7 @@ nsSocketTransport::Resume(void) nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); if (mSuspendCount) { mSuspendCount -= 1; @@ -1464,7 +1463,7 @@ nsSocketTransport::OnFull(nsIPipe* aPipe) nsresult rv = aPipe->GetInputStream(getter_AddRefs(in)); if (NS_SUCCEEDED(rv) && in == mReadPipeIn) { // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); NS_ASSERTION(!GetFlag(eSocketRead_Wait), "Already waiting!"); @@ -1497,7 +1496,7 @@ nsSocketTransport::OnWrite(nsIPipe* aPipe, PRUint32 aCount) rv = aPipe->GetInputStream(getter_AddRefs(in)); if (NS_SUCCEEDED(rv) && in == mWritePipeIn) { // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); if (GetFlag(eSocketWrite_Wait)) { ClearFlag(eSocketWrite_Wait); @@ -1530,7 +1529,7 @@ nsSocketTransport::OnEmpty(nsIPipe* aPipe) rv = aPipe->GetInputStream(getter_AddRefs(in)); if (NS_SUCCEEDED(rv) && in == mReadPipeIn) { // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); if (GetFlag(eSocketRead_Wait)) { ClearFlag(eSocketRead_Wait); @@ -1569,7 +1568,7 @@ nsSocketTransport::OnFound(nsISupports *aContext, nsHostEnt *aHostEnt) { // Enter the socket transport lock... - nsAutoLock lock(mLock); + nsAutoMonitor mon(mMonitor); nsresult rv = NS_OK; if (aHostEnt->hostEnt.h_addr_list @@ -1607,7 +1606,7 @@ nsSocketTransport::OnStopLookup(nsISupports *aContext, nsresult aStatus) { // Enter the socket transport lock... - nsAutoLock lock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("nsSocketTransport::OnStopLookup(...) [%s:%d %x]." @@ -1663,7 +1662,7 @@ nsSocketTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt) nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::AsyncOpen() [%s:%d %x]\n", @@ -1707,7 +1706,7 @@ nsSocketTransport::AsyncRead(PRUint32 startPosition, PRInt32 readCount, nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::AsyncRead() [%s:%d %x]\t" @@ -1768,7 +1767,7 @@ nsSocketTransport::AsyncWrite(nsIInputStream* aFromStream, nsresult rv = NS_OK; // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::AsyncWrite() [%s:%d %x]\t" @@ -1837,7 +1836,7 @@ nsSocketTransport::OpenInputStream(PRUint32 startPosition, PRInt32 readCount, NS_ASSERTION(startPosition == 0, "fix me"); // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::OpenInputStream() [%s:%d %x].\n", @@ -1888,7 +1887,7 @@ nsSocketTransport::OpenOutputStream(PRUint32 startPosition, nsIOutputStream* *re NS_ASSERTION(startPosition == 0, "fix me"); // Enter the socket transport lock... - nsAutoLock aLock(mLock); + nsAutoMonitor mon(mMonitor); PR_LOG(gSocketLog, PR_LOG_DEBUG, ("+++ Entering nsSocketTransport::OpenOutputStream() [%s:%d %x].\n", diff --git a/netwerk/base/src/nsSocketTransport.h b/netwerk/base/src/nsSocketTransport.h index 5c36ca7b07d..f6094201f9e 100644 --- a/netwerk/base/src/nsSocketTransport.h +++ b/netwerk/base/src/nsSocketTransport.h @@ -203,7 +203,7 @@ protected: PRIntervalTime mLastActiveTime; PRCList mListLink; PRUint32 mLoadAttributes; - PRLock* mLock; + PRMonitor* mMonitor; PRNetAddr mNetAddress; nsCOMPtr mOpenContext; nsCOMPtr mOpenObserver; diff --git a/netwerk/base/src/nsSocketTransportService.cpp b/netwerk/base/src/nsSocketTransportService.cpp index 01a3aaa5275..88785f3e3cc 100644 --- a/netwerk/base/src/nsSocketTransportService.cpp +++ b/netwerk/base/src/nsSocketTransportService.cpp @@ -107,7 +107,8 @@ nsSocketTransportService::Create(nsISupports *aOuter, REFNSIID aIID, void **aRes return rv; } -nsresult nsSocketTransportService::Init(void) +NS_IMETHODIMP +nsSocketTransportService::Init(void) { nsresult rv = NS_OK; diff --git a/netwerk/base/src/nsSocketTransportService.h b/netwerk/base/src/nsSocketTransportService.h index bd420a9769d..9cb42a11088 100644 --- a/netwerk/base/src/nsSocketTransportService.h +++ b/netwerk/base/src/nsSocketTransportService.h @@ -69,8 +69,6 @@ public: static NS_METHOD Create(nsISupports *aOuter, REFNSIID aIID, void **aResult); - nsresult Init(void); - nsresult AddToWorkQ(nsSocketTransport* aTransport); // XXX: Should these use intervals or Milliseconds?