| 103 | } |
| 104 | |
| 105 | void |
| 106 | APIServer::Client::ProcessChunk( |
| 107 | std::string chunk) |
| 108 | { |
| 109 | acc_ += chunk; |
| 110 | /* Runs on APIServer Thread. */ |
| 111 | size_t pos; |
| 112 | while((pos = acc_.find(kSocketBoundary)) != std::string::npos) { |
| 113 | std::string raw = acc_.substr(0, pos); |
| 114 | acc_ = acc_.substr(pos + strlen(kSocketBoundary)); |
| 115 | if(raw.length() == 0) { |
| 116 | continue; |
| 117 | } |
| 118 | |
| 119 | /* |
| 120 | LOG(INFO) << "RAW: `" << raw << "`"; |
| 121 | LOG(INFO) << "RAW LENGHT: " << raw.length(); |
| 122 | */ |
| 123 | |
| 124 | scoped_ptr<base::DictionaryValue> action; |
| 125 | action.reset( |
| 126 | static_cast<base::DictionaryValue*>(base::JSONReader::Read(raw))); |
| 127 | |
| 128 | BrowserThread::PostTask( |
| 129 | BrowserThread::UI, FROM_HERE, |
| 130 | base::Bind(&APIServer::Client::PerformAction, this, |
| 131 | base::Passed(action.Pass()))); |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | void |
| 136 | APIServer::Client::ReplyToAction( |