IPCTransportProvider.cpp 2.3 KB

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