1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
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/. */
7 #ifndef mozilla_net_AutoClose_h
8 #define mozilla_net_AutoClose_h
12 namespace mozilla
{ namespace net
{
14 // Like an nsAutoPtr for XPCOM streams (e.g. nsIAsyncInputStream) and other
15 // refcounted classes that need to have the Close() method called explicitly
16 // before they are destroyed.
31 already_AddRefed
<T
> forget()
36 void takeOver(nsCOMPtr
<T
> & rhs
)
42 void takeOver(AutoClose
<T
> & rhs
)
45 mPtr
= rhs
.mPtr
.forget();
48 void CloseAndRelease()
56 return mPtr
.operator->();
67 void operator=(const AutoClose
<T
> &) MOZ_DELETE
;
68 AutoClose(const AutoClose
<T
> &) MOZ_DELETE
;
73 } } // namespace mozilla::net
75 #endif // mozilla_net_AutoClose_h