gecko-dev/dom/midi/MIDIPortChild.h
Alex Gaynor 0f01791ffc Bug 1512990 - Part 4 - remove declarations of Recv/Answer methods from IPDL protocol base class; r=froydnj
For cases where the class has direct calls (that is, we cast `this` to the
subclass before making the call) no longer declare Recv/Answer methods on the
base class at all. This should ensure that slots for them are not generated in
vtables, and also allow the derived class to choose the method signature (e.g.
whether it wants to take something by reference or by value).

Differential Revision: https://phabricator.services.mozilla.com/D18132

--HG--
extra : moz-landing-system : lando
2019-02-06 15:58:43 +00:00

53 lines
1.6 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* 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 mozilla_dom_MIDIPortChild_h
#define mozilla_dom_MIDIPortChild_h
#include "mozilla/dom/PMIDIPortChild.h"
#include "mozilla/dom/MIDIPortInterface.h"
namespace mozilla {
namespace dom {
class MIDIPort;
class MIDIPortInfo;
/**
* Child actor for a MIDIPort object. Each MIDIPort DOM object in JS has a its
* own child actor. The lifetime of the actor object is dependent on the
* lifetime of the JS object.
*
*/
class MIDIPortChild final : public PMIDIPortChild, public MIDIPortInterface {
public:
NS_INLINE_DECL_REFCOUNTING(MIDIPortChild);
mozilla::ipc::IPCResult RecvReceive(nsTArray<MIDIMessage>&& aMsgs);
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
mozilla::ipc::IPCResult RecvUpdateStatus(const uint32_t& aDeviceState,
const uint32_t& aConnectionState);
MIDIPortChild(const MIDIPortInfo& aPortInfo, bool aSysexEnabled,
MIDIPort* aPort);
// virtual void Shutdown() override;
void SetActorAlive();
void Teardown();
private:
~MIDIPortChild() = default;
// Pointer to the DOM object this actor represents. The actor cannot outlive
// the DOM object.
MIDIPort* mDOMPort;
bool mActorWasAlive;
};
} // namespace dom
} // namespace mozilla
#endif