|  | #include "qemu/osdep.h" | 
|  | #include "hw/stream.h" | 
|  | #include "qemu/module.h" | 
|  |  | 
|  | size_t | 
|  | stream_push(StreamSink *sink, uint8_t *buf, size_t len, bool eop) | 
|  | { | 
|  | StreamSinkClass *k =  STREAM_SINK_GET_CLASS(sink); | 
|  |  | 
|  | return k->push(sink, buf, len, eop); | 
|  | } | 
|  |  | 
|  | bool | 
|  | stream_can_push(StreamSink *sink, StreamCanPushNotifyFn notify, | 
|  | void *notify_opaque) | 
|  | { | 
|  | StreamSinkClass *k =  STREAM_SINK_GET_CLASS(sink); | 
|  |  | 
|  | return k->can_push ? k->can_push(sink, notify, notify_opaque) : true; | 
|  | } | 
|  |  | 
|  | static const TypeInfo stream_sink_info = { | 
|  | .name          = TYPE_STREAM_SINK, | 
|  | .parent        = TYPE_INTERFACE, | 
|  | .class_size = sizeof(StreamSinkClass), | 
|  | }; | 
|  |  | 
|  |  | 
|  | static void stream_sink_register_types(void) | 
|  | { | 
|  | type_register_static(&stream_sink_info); | 
|  | } | 
|  |  | 
|  | type_init(stream_sink_register_types) |