Source code
Revision control
Copy as Markdown
Other Tools
/* vim:set ts=4 sw=2 sts=2 et cin: */
/* 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 ConnectionAttemptPool_h_
#define ConnectionAttemptPool_h_
#include "ConnectionAttempt.h"
#include "DashboardTypes.h"
#include "nsHashKeys.h"
#include "nsTHashMap.h"
#include "PendingTransactionInfo.h"
namespace mozilla {
namespace net {
class ConnectionEntry;
class ConnectionAttemptPool final {
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(ConnectionAttemptPool)
explicit ConnectionAttemptPool(ConnectionEntry* aEntry);
nsresult StartConnectionEstablishment(
ConnectionEntry* entry, nsAHttpTransaction* trans, uint32_t caps,
bool speculative, bool urgentStart, bool allow1918,
PendingTransactionInfo* pendingTransInfo);
size_t Length() const { return mAttempts.Length(); }
void RemoveConnectionAttempt(ConnectionAttempt* attempt, bool abandon);
void CloseAllConnectionAttempts();
// calculate the number of half open sockets that have not had at least 1
// connection complete
uint32_t UnconnectedConnectionAttempts() const;
bool FindConnToClaim(PendingTransactionInfo* pendingTransInfo);
void TimeoutTick();
void PrintDiagnostics(nsCString& log);
void GetConnectionData(HttpRetParams& data);
uint32_t UnconnectedUDPConnsLength() const;
protected:
~ConnectionAttemptPool();
void InsertIntoConnectionAttempts(ConnectionAttempt* sock);
WeakPtr<ConnectionEntry> mEntry;
nsTArray<RefPtr<ConnectionAttempt>> mAttempts;
};
} // namespace net
} // namespace mozilla
#endif