1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef LIBRARIES_NACL_IO_STREAM_STREAM_EVENT_EMITTER_H_ 6 #define LIBRARIES_NACL_IO_STREAM_STREAM_EVENT_EMITTER_H_ 7 8 #include "nacl_io/event_emitter.h" 9 10 #include "sdk_util/macros.h" 11 #include "sdk_util/scoped_ref.h" 12 13 namespace nacl_io { 14 15 class FIFOInterface; 16 class StreamEventEmitter; 17 class StreamNode; 18 19 typedef sdk_util::ScopedRef<StreamEventEmitter> ScopedStreamEventEmitter; 20 21 class StreamEventEmitter : public EventEmitter { 22 public: 23 StreamEventEmitter(); 24 25 void AttachStream(StreamNode* stream); 26 void DetachStream(); 27 28 StreamNode* stream() { return stream_; } 29 30 protected: 31 virtual FIFOInterface* in_fifo() = 0; 32 virtual FIFOInterface* out_fifo() = 0; 33 void UpdateStatus_Locked(); 34 35 protected: 36 StreamNode* stream_; 37 DISALLOW_COPY_AND_ASSIGN(StreamEventEmitter); 38 }; 39 40 } // namespace nacl_io 41 42 #endif // LIBRARIES_NACL_IO_STREAM_STREAM_EVENT_EMITTER_H_ 43