118c86e2bSPeter Maydell #include "qemu/osdep.h"
249ab747fSPaolo Bonzini #include "hw/stream.h"
30b8fa32fSMarkus Armbruster #include "qemu/module.h"
449ab747fSPaolo Bonzini
535e60bfdSPeter Crosthwaite size_t
stream_push(StreamSink * sink,uint8_t * buf,size_t len,bool eop)6*cfbef3f4SPhilippe Mathieu-Daudé stream_push(StreamSink *sink, uint8_t *buf, size_t len, bool eop)
749ab747fSPaolo Bonzini {
8*cfbef3f4SPhilippe Mathieu-Daudé StreamSinkClass *k = STREAM_SINK_GET_CLASS(sink);
949ab747fSPaolo Bonzini
1051b19950SEdgar E. Iglesias return k->push(sink, buf, len, eop);
1135e60bfdSPeter Crosthwaite }
1235e60bfdSPeter Crosthwaite
1335e60bfdSPeter Crosthwaite bool
stream_can_push(StreamSink * sink,StreamCanPushNotifyFn notify,void * notify_opaque)14*cfbef3f4SPhilippe Mathieu-Daudé stream_can_push(StreamSink *sink, StreamCanPushNotifyFn notify,
1535e60bfdSPeter Crosthwaite void *notify_opaque)
1635e60bfdSPeter Crosthwaite {
17*cfbef3f4SPhilippe Mathieu-Daudé StreamSinkClass *k = STREAM_SINK_GET_CLASS(sink);
1835e60bfdSPeter Crosthwaite
1935e60bfdSPeter Crosthwaite return k->can_push ? k->can_push(sink, notify, notify_opaque) : true;
2049ab747fSPaolo Bonzini }
2149ab747fSPaolo Bonzini
22*cfbef3f4SPhilippe Mathieu-Daudé static const TypeInfo stream_sink_info = {
23*cfbef3f4SPhilippe Mathieu-Daudé .name = TYPE_STREAM_SINK,
2449ab747fSPaolo Bonzini .parent = TYPE_INTERFACE,
25*cfbef3f4SPhilippe Mathieu-Daudé .class_size = sizeof(StreamSinkClass),
2649ab747fSPaolo Bonzini };
2749ab747fSPaolo Bonzini
2849ab747fSPaolo Bonzini
stream_sink_register_types(void)29*cfbef3f4SPhilippe Mathieu-Daudé static void stream_sink_register_types(void)
3049ab747fSPaolo Bonzini {
31*cfbef3f4SPhilippe Mathieu-Daudé type_register_static(&stream_sink_info);
3249ab747fSPaolo Bonzini }
3349ab747fSPaolo Bonzini
34*cfbef3f4SPhilippe Mathieu-Daudé type_init(stream_sink_register_types)
35