/* 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 protocol PAltSvcTransaction;
include protocol PSocketProcess;
include protocol PHttpTransaction;

include NeckoChannelParams;

include "mozilla/net/ClassOfService.h";
include "mozilla/net/NeckoMessageUtils.h";

using mozilla::net::ClassOfService from "mozilla/net/ClassOfService.h";

namespace mozilla {
namespace net {

async protocol PHttpConnectionMgr
{
  manager PSocketProcess;

child:
  async __delete__();

  async DoShiftReloadConnectionCleanupWithConnInfo(HttpConnectionInfoCloneArgs aArgs);
  async UpdateCurrentBrowserId(uint64_t aId);
  async AddTransaction(PHttpTransaction aTrans, int32_t aPriority);
  async AddTransactionWithStickyConn(PHttpTransaction aTrans, int32_t aPriority,
                                     PHttpTransaction aTransWithStickyConn);
  async RescheduleTransaction(PHttpTransaction aTrans, int32_t aPriority);
  async UpdateClassOfServiceOnTransaction(PHttpTransaction aTrans,
                                          ClassOfService aClassOfService);
  async CancelTransaction(PHttpTransaction aTrans, nsresult aReason);
  async SpeculativeConnect(HttpConnectionInfoCloneArgs aConnInfo,
                           SpeculativeConnectionOverriderArgs? aOverriderArgs,
                           uint32_t aCaps, PAltSvcTransaction? aTrans,
                           bool aFetchHTTPSRR);
  async StartWebSocketConnection(PHttpTransaction aTransWithStickyConn,
                                 uint32_t aListenerId);
};

} // namespace net
} // namespace mozilla
