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
Gnash-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to