| 70 | } |
| 71 | |
| 72 | HTTPSender* HTTPWriter::createSender(bool isInternResponse) { |
| 73 | if(state()==CLOSED) |
| 74 | return NULL; |
| 75 | if (isInternResponse) { |
| 76 | if (!_pRequest) |
| 77 | return NULL; |
| 78 | if (_pResponse) |
| 79 | ERROR("HTTP Response already written") |
| 80 | _pResponse.reset(new HTTPSender(_session.peer.address, *_pRequest, _session.invoker.poolBuffers, _session.peer.path,_pSetCookieBuffer)); |
| 81 | return &*_pResponse; |
| 82 | } |
| 83 | if (!_pRequest && !_pLastRequest) { |
| 84 | ERROR("No HTTP request to answer") |
| 85 | return NULL; |
| 86 | } |
| 87 | _senders.emplace_back(new HTTPSender(_session.peer.address,_pRequest ? *_pRequest : *_pLastRequest,_session.invoker.poolBuffers,_session.peer.path,_pSetCookieBuffer)); |
| 88 | return &*_senders.back(); |
| 89 | } |
| 90 | |
| 91 | bool HTTPWriter::send(shared_ptr<HTTPSender>& pSender) { |
| 92 | Exception ex; |