| OLD | NEW | 
|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "net/tools/flip_server/streamer_interface.h" | 5 #include "net/tools/flip_server/streamer_interface.h" | 
| 6 | 6 | 
| 7 #include <string> | 7 #include <string> | 
| 8 | 8 | 
| 9 #include "net/tools/balsa/balsa_frame.h" | 9 #include "net/tools/balsa/balsa_frame.h" | 
| 10 #include "net/tools/flip_server/constants.h" | 10 #include "net/tools/flip_server/constants.h" | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 50 void StreamerSM::InitSMConnection(SMConnectionPoolInterface* connection_pool, | 50 void StreamerSM::InitSMConnection(SMConnectionPoolInterface* connection_pool, | 
| 51                                   SMInterface* sm_interface, | 51                                   SMInterface* sm_interface, | 
| 52                                   EpollServer* epoll_server, | 52                                   EpollServer* epoll_server, | 
| 53                                   int fd, | 53                                   int fd, | 
| 54                                   std::string server_ip, | 54                                   std::string server_ip, | 
| 55                                   std::string server_port, | 55                                   std::string server_port, | 
| 56                                   std::string remote_ip, | 56                                   std::string remote_ip, | 
| 57                                   bool use_ssl) { | 57                                   bool use_ssl) { | 
| 58   VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Initializing server " | 58   VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Initializing server " | 
| 59           << "connection."; | 59           << "connection."; | 
| 60   connection_->InitSMConnection(connection_pool, sm_interface, | 60   connection_->InitSMConnection(connection_pool, | 
| 61                                 epoll_server, fd, server_ip, | 61                                 sm_interface, | 
| 62                                 server_port, remote_ip, use_ssl); | 62                                 epoll_server, | 
|  | 63                                 fd, | 
|  | 64                                 server_ip, | 
|  | 65                                 server_port, | 
|  | 66                                 remote_ip, | 
|  | 67                                 use_ssl); | 
| 63 } | 68 } | 
| 64 | 69 | 
| 65 size_t StreamerSM::ProcessReadInput(const char* data, size_t len) { | 70 size_t StreamerSM::ProcessReadInput(const char* data, size_t len) { | 
| 66   // For now we only want to parse http requests. Just stream responses | 71   // For now we only want to parse http requests. Just stream responses | 
| 67   if (is_request_) { | 72   if (is_request_) { | 
| 68     return http_framer_->ProcessInput(data, len); | 73     return http_framer_->ProcessInput(data, len); | 
| 69   } else { | 74   } else { | 
| 70     return sm_other_interface_->ProcessWriteInput(data, len); | 75     return sm_other_interface_->ProcessWriteInput(data, len); | 
| 71   } | 76   } | 
| 72 } | 77 } | 
| 73 | 78 | 
| 74 size_t StreamerSM::ProcessWriteInput(const char* data, size_t len) { | 79 size_t StreamerSM::ProcessWriteInput(const char* data, size_t len) { | 
| 75   char * dataPtr = new char[len]; | 80   char* dataPtr = new char[len]; | 
| 76   memcpy(dataPtr, data, len); | 81   memcpy(dataPtr, data, len); | 
| 77   DataFrame* df = new DataFrame; | 82   DataFrame* df = new DataFrame; | 
| 78   df->data = (const char *)dataPtr; | 83   df->data = (const char*)dataPtr; | 
| 79   df->size = len; | 84   df->size = len; | 
| 80   df->delete_when_done = true; | 85   df->delete_when_done = true; | 
| 81   connection_->EnqueueDataFrame(df); | 86   connection_->EnqueueDataFrame(df); | 
| 82   return len; | 87   return len; | 
| 83 } | 88 } | 
| 84 | 89 | 
| 85 bool StreamerSM::Error() const { | 90 bool StreamerSM::Error() const { return false; } | 
| 86   return false; |  | 
| 87 } |  | 
| 88 | 91 | 
| 89 const char* StreamerSM::ErrorAsString() const { | 92 const char* StreamerSM::ErrorAsString() const { return "(none)"; } | 
| 90   return "(none)"; |  | 
| 91 } |  | 
| 92 | 93 | 
| 93 bool StreamerSM::MessageFullyRead() const { | 94 bool StreamerSM::MessageFullyRead() const { | 
| 94   if (is_request_) { | 95   if (is_request_) { | 
| 95     return http_framer_->MessageFullyRead(); | 96     return http_framer_->MessageFullyRead(); | 
| 96   } else { | 97   } else { | 
| 97     return false; | 98     return false; | 
| 98   } | 99   } | 
| 99 } | 100 } | 
| 100 | 101 | 
| 101 void StreamerSM::Reset() { | 102 void StreamerSM::Reset() { | 
| 102   VLOG(1) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Reset"; | 103   VLOG(1) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Reset"; | 
| 103   connection_->Cleanup("Server Reset"); | 104   connection_->Cleanup("Server Reset"); | 
| 104   http_framer_->Reset(); | 105   http_framer_->Reset(); | 
| 105 } | 106 } | 
| 106 | 107 | 
| 107 void StreamerSM::ResetForNewConnection() { | 108 void StreamerSM::ResetForNewConnection() { | 
| 108   http_framer_->Reset(); | 109   http_framer_->Reset(); | 
| 109   sm_other_interface_->Reset(); | 110   sm_other_interface_->Reset(); | 
| 110 } | 111 } | 
| 111 | 112 | 
| 112 void StreamerSM::Cleanup() { | 113 void StreamerSM::Cleanup() { | 
| 113   if (is_request_) | 114   if (is_request_) | 
| 114     http_framer_->Reset(); | 115     http_framer_->Reset(); | 
| 115 } | 116 } | 
| 116 | 117 | 
| 117 int StreamerSM::PostAcceptHook() { | 118 int StreamerSM::PostAcceptHook() { | 
| 118   if (!sm_other_interface_) { | 119   if (!sm_other_interface_) { | 
| 119     SMConnection *server_connection = | 120     SMConnection* server_connection = SMConnection::NewSMConnection( | 
| 120       SMConnection::NewSMConnection(epoll_server_, NULL, NULL, | 121         epoll_server_, NULL, NULL, acceptor_, "server_conn: "); | 
| 121                                     acceptor_, "server_conn: "); |  | 
| 122     if (server_connection == NULL) { | 122     if (server_connection == NULL) { | 
| 123       LOG(ERROR) << "StreamerSM: Could not create server conenction."; | 123       LOG(ERROR) << "StreamerSM: Could not create server conenction."; | 
| 124       return 0; | 124       return 0; | 
| 125     } | 125     } | 
| 126     VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Creating new server " | 126     VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerSM: Creating new server " | 
| 127             << "connection."; | 127             << "connection."; | 
| 128     sm_other_interface_ = new StreamerSM(server_connection, this, | 128     sm_other_interface_ = | 
| 129                                          epoll_server_, acceptor_); | 129         new StreamerSM(server_connection, this, epoll_server_, acceptor_); | 
| 130     sm_other_interface_->InitSMInterface(this, 0); | 130     sm_other_interface_->InitSMInterface(this, 0); | 
| 131   } | 131   } | 
| 132   // The Streamer interface is used to stream HTTPS connections, so we | 132   // The Streamer interface is used to stream HTTPS connections, so we | 
| 133   // will always use the https_server_ip/port here. | 133   // will always use the https_server_ip/port here. | 
| 134   sm_other_interface_->InitSMConnection(NULL, | 134   sm_other_interface_->InitSMConnection(NULL, | 
| 135                                         sm_other_interface_, | 135                                         sm_other_interface_, | 
| 136                                         epoll_server_, | 136                                         epoll_server_, | 
| 137                                         -1, | 137                                         -1, | 
| 138                                         acceptor_->https_server_ip_, | 138                                         acceptor_->https_server_ip_, | 
| 139                                         acceptor_->https_server_port_, | 139                                         acceptor_->https_server_port_, | 
| 140                                         std::string(), | 140                                         std::string(), | 
| 141                                         false); | 141                                         false); | 
| 142 | 142 | 
| 143   return 1; | 143   return 1; | 
| 144 } | 144 } | 
| 145 | 145 | 
| 146 size_t StreamerSM::SendSynStream(uint32 stream_id, | 146 size_t StreamerSM::SendSynStream(uint32 stream_id, | 
| 147                                  const BalsaHeaders& headers) { | 147                                  const BalsaHeaders& headers) { | 
| 148   return 0; | 148   return 0; | 
| 149 } | 149 } | 
| 150 | 150 | 
| 151 size_t StreamerSM::SendSynReply(uint32 stream_id, const BalsaHeaders& headers) { | 151 size_t StreamerSM::SendSynReply(uint32 stream_id, const BalsaHeaders& headers) { | 
| 152   return 0; | 152   return 0; | 
| 153 } | 153 } | 
| 154 | 154 | 
| 155 void StreamerSM::ProcessBodyInput(const char *input, size_t size) { | 155 void StreamerSM::ProcessBodyInput(const char* input, size_t size) { | 
| 156   VLOG(2) << ACCEPTOR_CLIENT_IDENT | 156   VLOG(2) << ACCEPTOR_CLIENT_IDENT | 
| 157           << "StreamerHttpSM: Process Body Input Data: " | 157           << "StreamerHttpSM: Process Body Input Data: " | 
| 158           << "size " << size; | 158           << "size " << size; | 
| 159   sm_other_interface_->ProcessWriteInput(input, size); | 159   sm_other_interface_->ProcessWriteInput(input, size); | 
| 160 } | 160 } | 
| 161 | 161 | 
| 162 void StreamerSM::MessageDone() { | 162 void StreamerSM::MessageDone() { | 
| 163   if (acceptor_->flip_handler_type_ == FLIP_HANDLER_PROXY) { | 163   if (acceptor_->flip_handler_type_ == FLIP_HANDLER_PROXY) { | 
| 164     VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerHttpSM: MessageDone."; | 164     VLOG(2) << ACCEPTOR_CLIENT_IDENT << "StreamerHttpSM: MessageDone."; | 
| 165     // TODO(kelindsay): anything need to be done ehre? | 165     // TODO(kelindsay): anything need to be done ehre? | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 180     LOG(INFO) << "NOT adding forward header."; | 180     LOG(INFO) << "NOT adding forward header."; | 
| 181   } | 181   } | 
| 182   SimpleBuffer sb; | 182   SimpleBuffer sb; | 
| 183   char* buffer; | 183   char* buffer; | 
| 184   int size; | 184   int size; | 
| 185   mod_headers.WriteHeaderAndEndingToBuffer(&sb); | 185   mod_headers.WriteHeaderAndEndingToBuffer(&sb); | 
| 186   sb.GetReadablePtr(&buffer, &size); | 186   sb.GetReadablePtr(&buffer, &size); | 
| 187   sm_other_interface_->ProcessWriteInput(buffer, size); | 187   sm_other_interface_->ProcessWriteInput(buffer, size); | 
| 188 } | 188 } | 
| 189 | 189 | 
| 190 void StreamerSM::HandleHeaderError(BalsaFrame* framer) { | 190 void StreamerSM::HandleHeaderError(BalsaFrame* framer) { HandleError(); } | 
| 191   HandleError(); |  | 
| 192 } |  | 
| 193 | 191 | 
| 194 void StreamerSM::HandleChunkingError(BalsaFrame* framer) { | 192 void StreamerSM::HandleChunkingError(BalsaFrame* framer) { HandleError(); } | 
| 195   HandleError(); |  | 
| 196 } |  | 
| 197 | 193 | 
| 198 void StreamerSM::HandleBodyError(BalsaFrame* framer) { | 194 void StreamerSM::HandleBodyError(BalsaFrame* framer) { HandleError(); } | 
| 199   HandleError(); |  | 
| 200 } |  | 
| 201 | 195 | 
| 202 void StreamerSM::HandleError() { | 196 void StreamerSM::HandleError() { | 
| 203   VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Error detected"; | 197   VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Error detected"; | 
| 204 } | 198 } | 
| 205 | 199 | 
| 206 }  // namespace net | 200 }  // namespace net | 
| 207 |  | 
| OLD | NEW | 
|---|