You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by br...@apache.org on 2015/11/10 08:25:44 UTC
trafficserver git commit: TS-4008: Cleanup SPDY ClientSessionSession
/ SpdyRequest Allocate and Deallocate code
Repository: trafficserver
Updated Branches:
refs/heads/master 343810126 -> 0d4c680e1
TS-4008: Cleanup SPDY ClientSessionSession / SpdyRequest Allocate and Deallocate code
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0d4c680e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0d4c680e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0d4c680e
Branch: refs/heads/master
Commit: 0d4c680e155dade5ac38fff6eeae1f01fd3e33bf
Parents: 3438101
Author: Can Selcik <cs...@linkedin.com>
Authored: Mon Nov 9 23:25:03 2015 -0800
Committer: Brian Geffon <br...@apache.org>
Committed: Mon Nov 9 23:25:03 2015 -0800
----------------------------------------------------------------------
proxy/spdy/SpdyCallbacks.cc | 2 +-
proxy/spdy/SpdyClientSession.cc | 17 +++++++++++++++--
proxy/spdy/SpdyClientSession.h | 23 +++++++++++++----------
3 files changed, 29 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0d4c680e/proxy/spdy/SpdyCallbacks.cc
----------------------------------------------------------------------
diff --git a/proxy/spdy/SpdyCallbacks.cc b/proxy/spdy/SpdyCallbacks.cc
index 69b40c8..6b3c02b 100644
--- a/proxy/spdy/SpdyCallbacks.cc
+++ b/proxy/spdy/SpdyCallbacks.cc
@@ -309,7 +309,7 @@ spdy_on_ctrl_recv_callback(spdylay_session *session, spdylay_frame_type type, sp
switch (type) {
case SPDYLAY_SYN_STREAM:
stream_id = frame->syn_stream.stream_id;
- req = spdyRequestAllocator.alloc();
+ req = SpdyRequest::alloc();
req->init(sm, stream_id);
req->append_nv(frame->syn_stream.nv);
sm->req_map[stream_id] = req;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0d4c680e/proxy/spdy/SpdyClientSession.cc
----------------------------------------------------------------------
diff --git a/proxy/spdy/SpdyClientSession.cc b/proxy/spdy/SpdyClientSession.cc
index c3d23b3..ae7c737 100644
--- a/proxy/spdy/SpdyClientSession.cc
+++ b/proxy/spdy/SpdyClientSession.cc
@@ -47,6 +47,20 @@ static int spdy_process_fetch_header(TSEvent event, SpdyClientSession *sm, TSFet
static int spdy_process_fetch_body(TSEvent event, SpdyClientSession *sm, TSFetchSM fetch_sm, SpdyRequest *req);
static uint64_t g_sm_id = 1;
+SpdyRequest *
+SpdyRequest::alloc()
+{
+ return spdyRequestAllocator.alloc();
+}
+
+void
+SpdyRequest::destroy()
+{
+ this->clear();
+ spdyRequestAllocator.free(this);
+}
+
+
void
SpdyRequest::init(SpdyClientSession *sm, int id)
{
@@ -136,8 +150,7 @@ SpdyClientSession::clear()
for (; iter != endIter; ++iter) {
SpdyRequest *req = iter->second;
if (req) {
- req->clear();
- spdyRequestAllocator.free(req);
+ req->destroy();
} else {
Error("req null in SpdSM::clear");
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0d4c680e/proxy/spdy/SpdyClientSession.h
----------------------------------------------------------------------
diff --git a/proxy/spdy/SpdyClientSession.h b/proxy/spdy/SpdyClientSession.h
index 516a34c..5e5d183 100644
--- a/proxy/spdy/SpdyClientSession.h
+++ b/proxy/spdy/SpdyClientSession.h
@@ -38,23 +38,24 @@ class SpdyRequest
{
public:
SpdyRequest()
- : spdy_sm(NULL), stream_id(-1), fetch_sm(NULL), has_submitted_data(false), need_resume_data(false), fetch_data_len(0),
- delta_window_size(0), fetch_body_completed(false)
+ : event(0), spdy_sm(NULL), stream_id(-1), start_time(0), fetch_sm(NULL), has_submitted_data(false), need_resume_data(false),
+ fetch_data_len(0), delta_window_size(0), fetch_body_completed(false)
{
}
SpdyRequest(SpdyClientSession *sm, int id)
- : spdy_sm(NULL), stream_id(-1), fetch_sm(NULL), has_submitted_data(false), need_resume_data(false), fetch_data_len(0),
- delta_window_size(0), fetch_body_completed(false)
+ : event(0), spdy_sm(NULL), stream_id(-1), start_time(0), fetch_sm(NULL), has_submitted_data(false), need_resume_data(false),
+ fetch_data_len(0), delta_window_size(0), fetch_body_completed(false)
{
init(sm, id);
}
- ~SpdyRequest() { clear(); }
-
void init(SpdyClientSession *sm, int id);
void clear();
+ static SpdyRequest *alloc();
+ void destroy();
+
void
append_nv(char **nv)
{
@@ -93,9 +94,12 @@ class SpdyClientSession : public ProxyClientSession, public PluginIdentity
{
public:
typedef ProxyClientSession super; ///< Parent type.
- SpdyClientSession() {}
+ SpdyClientSession()
+ : sm_id(0), version(spdy::SessionVersion::SESSION_VERSION_3_1), total_size(0), start_time(0), vc(NULL), req_buffer(NULL),
+ req_reader(NULL), resp_buffer(NULL), resp_reader(NULL), read_vio(NULL), write_vio(NULL), event(0), session(NULL)
+ {
+ }
- ~SpdyClientSession() { clear(); }
void init(NetVConnection *netvc);
void clear();
@@ -178,8 +182,7 @@ public:
{
SpdyRequest *req = this->find_request(streamId);
if (req) {
- req->clear();
- spdyRequestAllocator.free(req);
+ req->destroy();
this->req_map.erase(streamId);
}
if (req_map.empty() == true) {