private bool OnBusMessage (Bus bus, Message msg)
{
switch (msg.Type) {
case MessageType.Eos:
StopIterating ();
Close (false);
OnEventChanged (PlayerEvent.EndOfStream);
OnEventChanged (PlayerEvent.RequestNextTrack);
break;
case MessageType.StateChanged:
State old_state, new_state, pending_state;
msg.ParseStateChanged (out old_state, out new_state, out pending_state);
HandleStateChange (old_state, new_state, pending_state);
break;
case MessageType.Buffering:
int buffer_percent;
msg.ParseBuffering (out buffer_percent);
HandleBuffering (buffer_percent);
break;
case MessageType.Tag:
Pad pad;
TagList tag_list;
msg.ParseTag (out pad, out tag_list);
HandleTag (pad, tag_list);
break;
case MessageType.Error:
Enum error_type;
string err_msg, debug;
msg.ParseError (out error_type, out err_msg, out debug);
HandleError (error_type, err_msg, debug);
break;
}
return true;
}