gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r9583: improve headers parsing


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r9583: improve headers parsing
Date: Tue, 12 Aug 2008 16:33:18 +0200
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9583
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Tue 2008-08-12 16:33:18 +0200
message:
  improve headers parsing
modified:
  libcore/asobj/NetConnection.cpp
    ------------------------------------------------------------
    revno: 9582.1.1
    committer: Sandro Santilli <address@hidden>
    branch nick: mybranch
    timestamp: Tue 2008-08-12 16:26:20 +0200
    message:
      Interpret AMF header as a list of methods to invoke.
      This was tested, only issue is we'd need to invoke those methods
      for every *call*, rather then once each batched set of calls.
    modified:
      libcore/asobj/NetConnection.cpp
    ------------------------------------------------------------
    revno: 9582.1.2
    committer: Sandro Santilli <address@hidden>
    branch nick: mybranch
    timestamp: Tue 2008-08-12 16:32:12 +0200
    message:
      tick 20 times each second for remoting
    modified:
      libcore/asobj/NetConnection.cpp
=== modified file 'libcore/asobj/NetConnection.cpp'
--- a/libcore/asobj/NetConnection.cpp   2008-08-12 12:59:08 +0000
+++ b/libcore/asobj/NetConnection.cpp   2008-08-12 14:32:12 +0000
@@ -595,6 +595,8 @@
 
                                        // parse header
                                        b += 2; // skip version indicator and 
client id
+
+                                       // NOTE: this looks much like parsing 
of an OBJECT_AMF0
                                        si = readNetworkShort(b); b += 2; // 
number of headers
                                        uint8_t headers_ok = 1;
                                        if(si != 0)
@@ -612,6 +614,13 @@
                                                                headers_ok = 0;
                                                                break;
                                                        }
+                                                       std::string 
headerName((char*)b, si); // end-b);
+                                                       //if( 
!amf0_read_value(b, end, tmp) )
+                                                       //{
+                                                       //      headers_ok = 0;
+                                                       //      break;
+                                                       //}
+                                                       log_debug("Header name 
%s", headerName);
                                                        b += si;
                                                        if ( b + 5 > end ) {
                                                                headers_ok = 0;
@@ -624,6 +633,15 @@
                                                                break;
                                                        }
                                                        log_debug("Header value 
%s", tmp);
+
+                                                       { // method call for 
each header
+                                                         // FIXME: it seems to 
me that the call should happen
+                                                               VM& vm = 
_nc.getVM();
+                                                               string_table& 
st = vm.getStringTable();
+                                                               
string_table::key key = st.find(headerName);
+                                                               
log_debug("Calling NetConnection.%s(%s)", headerName, tmp);
+                                                               
_nc.callMethod(key, tmp);
+                                                       }
                                                }
                                        }
 
@@ -744,7 +762,7 @@
                boost::intrusive_ptr<builtin_function> ticker_as = \
                        new builtin_function(&AMFQueue::amfqueue_tick_wrapper);
                std::auto_ptr<Timer> timer(new Timer);
-               unsigned long delayMS = 500; // FIXME crank up to 50 or so
+               unsigned long delayMS = 50; // FIXME crank up to 50 or so
                timer->setInterval(*ticker_as, delayMS, &_nc);
                ticker = _nc.getVM().getRoot().add_interval_timer(timer, true);
        }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]