Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set sw=2 ts=8 et ft=cpp : */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #include "mozilla/net/IPCTransportProvider.h"
8 :
9 : #include "nsISocketTransport.h"
10 : #include "nsIAsyncInputStream.h"
11 : #include "nsIAsyncOutputStream.h"
12 :
13 : namespace mozilla {
14 : namespace net {
15 :
16 0 : NS_IMPL_ISUPPORTS(TransportProviderParent,
17 : nsITransportProvider,
18 : nsIHttpUpgradeListener)
19 :
20 0 : TransportProviderParent::TransportProviderParent()
21 : {
22 0 : }
23 :
24 0 : TransportProviderParent::~TransportProviderParent()
25 : {
26 0 : }
27 :
28 : NS_IMETHODIMP
29 0 : TransportProviderParent::SetListener(nsIHttpUpgradeListener* aListener)
30 : {
31 0 : MOZ_ASSERT(aListener);
32 0 : mListener = aListener;
33 :
34 0 : MaybeNotify();
35 :
36 0 : return NS_OK;
37 : }
38 :
39 : NS_IMETHODIMP
40 0 : TransportProviderParent::GetIPCChild(mozilla::net::PTransportProviderChild** aChild)
41 : {
42 0 : MOZ_CRASH("Don't call this in parent process");
43 : *aChild = nullptr;
44 : return NS_OK;
45 : }
46 :
47 : NS_IMETHODIMP
48 0 : TransportProviderParent::OnTransportAvailable(nsISocketTransport* aTransport,
49 : nsIAsyncInputStream* aSocketIn,
50 : nsIAsyncOutputStream* aSocketOut)
51 : {
52 0 : MOZ_ASSERT(aTransport && aSocketOut && aSocketOut);
53 0 : mTransport = aTransport;
54 0 : mSocketIn = aSocketIn;
55 0 : mSocketOut = aSocketOut;
56 :
57 0 : MaybeNotify();
58 :
59 0 : return NS_OK;
60 : }
61 :
62 : void
63 0 : TransportProviderParent::MaybeNotify()
64 : {
65 0 : if (!mListener || !mTransport) {
66 0 : return;
67 : }
68 :
69 0 : DebugOnly<nsresult> rv = mListener->OnTransportAvailable(mTransport,
70 : mSocketIn,
71 0 : mSocketOut);
72 0 : MOZ_ASSERT(NS_SUCCEEDED(rv));
73 : }
74 :
75 :
76 0 : NS_IMPL_ISUPPORTS(TransportProviderChild,
77 : nsITransportProvider)
78 :
79 0 : TransportProviderChild::TransportProviderChild()
80 : {
81 0 : }
82 :
83 0 : TransportProviderChild::~TransportProviderChild()
84 : {
85 0 : Send__delete__(this);
86 0 : }
87 :
88 : NS_IMETHODIMP
89 0 : TransportProviderChild::SetListener(nsIHttpUpgradeListener* aListener)
90 : {
91 0 : MOZ_CRASH("Don't call this in child process");
92 : return NS_OK;
93 : }
94 :
95 : NS_IMETHODIMP
96 0 : TransportProviderChild::GetIPCChild(mozilla::net::PTransportProviderChild** aChild)
97 : {
98 0 : *aChild = this;
99 0 : return NS_OK;
100 : }
101 :
102 : } // net
103 : } // mozilla
|