NS_IMETHODIMP nsSocketTransportService::NotifyWhenCanAttachSocket(nsIRunnable *event) { LOG(("nsSocketTransportService::NotifyWhenCanAttachSocket\n")); NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread"); if (CanAttachSocket()) { return Dispatch(event, NS_DISPATCH_NORMAL); } mPendingSocketQ.PutEvent(event); return NS_OK; }
NS_IMETHODIMP nsSocketTransportService::NotifyWhenCanAttachSocket(nsIRunnable *event) { SOCKET_LOG(("nsSocketTransportService::NotifyWhenCanAttachSocket\n")); NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread"); if (CanAttachSocket()) { return Dispatch(event, NS_DISPATCH_NORMAL); } LinkedRunnableEvent *runnable = new LinkedRunnableEvent(event); mPendingSocketQueue.insertBack(runnable); return NS_OK; }
nsresult nsSocketTransportService::NotifyWhenCanAttachSocket(PLEvent *event) { LOG(("nsSocketTransportService::NotifyWhenCanAttachSocket\n")); NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread"); if (CanAttachSocket()) { NS_WARNING("should have called CanAttachSocket"); return PostEvent(event); } PR_APPEND_LINK(&event->link, &mPendingSocketQ); return NS_OK; }
NS_IMETHODIMP nsSocketTransportService::AttachSocket(PRFileDesc *fd, nsASocketHandler *handler) { SOCKET_LOG(("nsSocketTransportService::AttachSocket [handler=%p]\n", handler)); NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread"); if (!CanAttachSocket()) { return NS_ERROR_NOT_AVAILABLE; } SocketContext sock; sock.mFD = fd; sock.mHandler = handler; sock.mElapsedTime = 0; nsresult rv = AddToIdleList(&sock); if (NS_SUCCEEDED(rv)) NS_ADDREF(handler); return rv; }