Hi, untested patch as I'm still trying to figure out how to to test
RTMP).
Regards.
=== modified file 'libnet/rtmp_msg.cpp'
--- libnet/rtmp_msg.cpp 2009-07-26 01:56:07 +0000
+++ libnet/rtmp_msg.cpp 2009-08-10 11:37:46 +0000
@@ -65,6 +65,58 @@ RTMPMsg::~RTMPMsg()
// GNASH_REPORT_FUNCTION;
}
+struct RTMPStatusMsgCode {
+ const char *msg;
+ RTMPMsg::rtmp_status_e code;
+};
+
+static RTMPStatusMsgCode rtmp_msg_code_list[] = {
+ // Error messages we get as the result of a NetConnection::connect()
+ { "NetConnection.Connect.Success", RTMPMsg::NC_CONNECT_SUCCESS },
+ { "NetConnection.Call.Failed", RTMPMsg::NC_CALL_FAILED },
+ { "NetConnection.Call.BadVersion", RTMPMsg::NC_CALL_BADVERSION },
+ { "NetConnection.AppShutdown", RTMPMsg::NC_CONNECT_APPSHUTDOWN },
+ { "NetConnection.Connect.Failed", RTMPMsg::NC_CONNECT_FAILED },
+ { "NetConnection.Invalid.Application", RTMPMsg::NC_CONNECT_INVALID_APPLICATION },
+ { "NetConnection.Connect.Rejected", RTMPMsg::NC_CONNECT_REJECTED },
+
+ // we get this and then the FLV file data is next
+ { "NetStream.Data.Start", RTMPMsg::NS_DATA_START },
+
+ // Error messages we get as the result of a NetStream::play()
+ { "NetStream.Pause.Notify", RTMPMsg::NS_PAUSE_NOTIFY },
+ { "NetStream.Play.Complete", RTMPMsg::NS_PLAY_COMPLETE },
+ { "NetStream.Play.Failed", RTMPMsg::NS_PLAY_FAILED },
+ { "NetStream.InvalidArg", RTMPMsg::NS_INVALID_ARGUMENT },
+ { "NetStream.Play.File.Structure.Invalid", RTMPMsg::NS_PLAY_FILE_STRUCTURE_INVALID },
+ { "NetStream.Play.Insufficient.BW", RTMPMsg::NS_PLAY_INSUFFICIENT_BW },
+ { "NetStream.Play.No.Supported.Track.Found", RTMPMsg::NS_PLAY_NO_SUPPORTED_TRACK_FOUND },
+ { "NetStream.Play.PublishNotify", RTMPMsg::NS_PLAY_PUBLISHNOTIFY },
+ { "NetStream.Play.StreamNotFound", RTMPMsg::NS_PLAY_STREAMNOTFOUND },
+ { "NetStream.Play.SWITCH", RTMPMsg::NS_PLAY_SWITCH },
+ { "NetStream.Play.UnpublishNotify", RTMPMsg::NS_PLAY_UNPUBLISHNOTIFY },
+ { "NetStream.Play.Start", RTMPMsg::NS_PLAY_START },
+ { "NetStream.Play.Stop" , RTMPMsg::NS_PLAY_STOP },
+ { "NetStream.Play.Reset", RTMPMsg::NS_PLAY_RESET },
+ { "NetStream.Publish.Badname", RTMPMsg::NS_PUBLISH_BADNAME },
+ { "NetStream.Publish.Start", RTMPMsg::NS_PUBLISH_START },
+ { "NetStream.Record.Failed", RTMPMsg::NS_RECORD_FAILED },
+ { "NetStream.Record.Noaccess", RTMPMsg::NS_RECORD_NOACCESS },
+ { "NetStream.Record.Start", RTMPMsg::NS_RECORD_START },
+ { "NetStream.Record.Stop", RTMPMsg::NS_RECORD_STOP },
+ { "NetStream.Seek.Failed", RTMPMsg::NS_SEEK_FAILED },
+ { "NetStream.Seek.NOTIFY", RTMPMsg::NS_SEEK_NOTIFY },
+ { "NetStream.Unpause.Notify", RTMPMsg::NS_UNPAUSE_NOTIFY },
+ { "NetStream.Unpublished.Success", RTMPMsg::NS_UNPUBLISHED_SUCCESS },
+
+ // Error messages we get as the result of a SharedObject operation
+ { "SharedObject.Creation.Failed", RTMPMsg::SO_CREATION_FAILED },
+ { "SharedObject.No.Read.Access", RTMPMsg::SO_NO_READ_ACCESS },
+ { "SharedObject.No.Write.Access", RTMPMsg::SO_NO_WRITE_ACCESS },
+ { "SharedObject.Persistence.Mismatch", RTMPMsg::SO_PERSISTENCE_MISMATCH },
+ { 0 }
+};
+
// All the result messages from the server are ASCII text, so they have to be parsed to
// determine what really happened. We return the numerical equivalant for each _result,
// error, or onStatus message, the actual data can be obtained from the Element.
@@ -92,159 +144,12 @@ RTMPMsg::checkStatus(boost::shared_ptr<a
value = child->to_string();
if (name == "code") {
// log_debug("Name is: %s, Value is: %s", name.c_str(), value.c_str());
- // Error messages we get as the result of a NetConnection::connect()
- if (value == "NetConnection.Connect.Success") {
- _status = RTMPMsg::NC_CONNECT_SUCCESS;
- return _status;
- }
- if (value == "NetConnection.Call.Failed") {
- _status = RTMPMsg::NC_CALL_FAILED;
- return _status;
- }
- if (value == "NetConnection.Call.BadVersion") {
- _status = RTMPMsg::NC_CALL_BADVERSION;
- return _status;
- }
- if (value == "NetConnection.AppShutdown") {
- _status = RTMPMsg::NC_CONNECT_APPSHUTDOWN;
- return _status;
- }
- if (value == "NetConnection.Connect.Failed") {
- _status = RTMPMsg::NC_CONNECT_FAILED;
- return _status;
- }
- if (value == "NetConnection.Invalid.Application") {
- _status = RTMPMsg::NC_CONNECT_INVALID_APPLICATION;
- return _status;
- }
- if (value == "NetConnection.Connect.Rejected") {
- _status = RTMPMsg::NC_CONNECT_REJECTED;
- return _status;
- }
-
- // we get this and then the FLV file data is next
- if (value == "NetStream.Data.Start") {
- _status = RTMPMsg::NS_DATA_START;
- return _status;
- }
- // Error messages we get as the result of a NetStream::play()
- if (value == "NetStream.Pause.Notify") {
- _status = RTMPMsg::NS_PAUSE_NOTIFY;
- return _status;
- }
- if (value == "NetStream.Play.Complete") {
- _status = RTMPMsg::NS_PLAY_COMPLETE;
- return _status;
- }
- if (value == "NetStream.Play.Failed") {
- _status = RTMPMsg::NS_PLAY_FAILED;
- return _status;
- }
- if (value == "NetStream.InvalidArg") {
- _status = RTMPMsg::NS_INVALID_ARGUMENT;
- return _status;
- }
- if (value == "NetStream.Play.File.Structure.Invalid") {
- _status = RTMPMsg::NS_PLAY_FILE_STRUCTURE_INVALID;
- return _status;
- }
- if (value == "NetStream.Play.Insufficient.BW") {
- _status = RTMPMsg::NS_PLAY_INSUFFICIENT_BW;
- return _status;
- }
- if (value == "NetStream.Play.No.Supported.Track.Found") {
- _status = RTMPMsg::NS_PLAY_NO_SUPPORTED_TRACK_FOUND;
- return _status;
- }
- if (value == "NetStream.Play.PublishNotify") {
- _status = RTMPMsg::NS_PLAY_PUBLISHNOTIFY;
- return _status;
- }
- if (value == "NetStream.Play.StreamNotFound") {
- _status = RTMPMsg::NS_PLAY_STREAMNOTFOUND;
- return _status;
- }
- if (value == "NetStream.Play.SWITCH") {
- _status = RTMPMsg::NS_PLAY_SWITCH;
- return _status;
- }
- if (value == "NetStream.Play.UnpublishNotify") {
- _status = RTMPMsg::NS_PLAY_UNPUBLISHNOTIFY;
- return _status;
- }
- if (value == "NetStream.Play.Start") {
- _status = RTMPMsg::NS_PLAY_START;
- return _status;
- }
- if (value == "NetStream.Play.Stop") {
- _status = RTMPMsg::NS_PLAY_STOP;
- return _status;
- }
- if (value == "NetStream.Play.Reset") {
- _status = RTMPMsg::NS_PLAY_RESET;
- return _status;
- }
- if (value == "NetStream.Publish.Badname") {
- _status = RTMPMsg::NS_PUBLISH_BADNAME;
- return _status;
- }
- if (value == "NetStream.Publish.Start") {
- _status = RTMPMsg::NS_PUBLISH_START;
- return _status;
- }
-
- if (value == "NetStream.Record.Failed") {
- _status = RTMPMsg::NS_RECORD_FAILED;
- return _status;
- }
- if (value == "NetStream.Record.Noaccess") {
- _status = RTMPMsg::NS_RECORD_NOACCESS;
- return _status;
- }
- if (value == "NetStream.Record.Start") {
- _status = RTMPMsg::NS_RECORD_START;
- return _status;
- }
- if (value == "NetStream.Record.Stop") {
- _status = RTMPMsg::NS_RECORD_STOP;
- return _status;
- }
- if (value == "NetStream.Seek.Failed") {
- _status = RTMPMsg::NS_SEEK_FAILED;
- return _status;
- }
- if (value == "NetStream.Seek.NOTIFY") {
- _status = RTMPMsg::NS_SEEK_NOTIFY;
- return _status;
- }
- if (value == "NetStream.Unpause.Notify") {
- _status = RTMPMsg::NS_UNPAUSE_NOTIFY;
- return _status;
- }
- if (value == "NetStream.Unpublished.Success") {
- _status = RTMPMsg::NS_UNPUBLISHED_SUCCESS;
- return _status;
- }
-
- // Error messages we get as the result of a SharedObject operation
- if (value == "SharedObject.Creation.Failed") {
- _status = RTMPMsg::SO_CREATION_FAILED;
- return _status;
- }
- if (value == "SharedObject.No.Read.Access") {
- _status = RTMPMsg::SO_NO_READ_ACCESS;
- return _status;
- }
- if (value == "SharedObject.No.Write.Access") {
- _status = RTMPMsg::SO_NO_WRITE_ACCESS;
- return _status;
- }
- if (value == "SharedObject.Persistence.Mismatch") {
- _status = RTMPMsg::SO_PERSISTENCE_MISMATCH;
- return _status;
- }
-
-
+ for (RTMPStatusMsgCode *p = rtmp_msg_code_list; p->msg; p++) {
+ if (value == p->msg) {
+ _status = p->code;
+ return _status;
+ }
+ }
}
}
}
_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev