BGPSpeaker/net_ctrl: Move _send_*_response() function

This patch moves _send_*_response() function into RpcSession class
to use socket wrapper methods for maintaining the connection state
safely.

Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
IWASE Yusuke 2016-12-16 15:17:41 +09:00 committed by FUJITA Tomonori
parent f1edc9fbd0
commit 27b253d06e

View File

@ -156,6 +156,16 @@ class RpcSession(Activity):
for msg in self._unpacker:
return msg
def _send_error_response(self, request, err_msg):
rpc_msg = self.create_error_response(request[RPC_IDX_MSG_ID],
str(err_msg))
return self._sendall(rpc_msg)
def _send_success_response(self, request, result):
rpc_msg = self.create_success_response(request[RPC_IDX_MSG_ID],
result)
return self._sendall(rpc_msg)
def send_notification(self, method, params):
rpc_msg = self.create_notification(method, params)
return self._sendall(rpc_msg)
@ -177,10 +187,9 @@ class RpcSession(Activity):
if msg[0] == RPC_MSG_REQUEST:
try:
result = _handle_request(msg)
_send_success_response(self, self._socket, msg, result)
self._send_success_response(msg, result)
except BGPSException as e:
_send_error_response(self, self._socket, msg,
e.message)
self._send_error_response(msg, e.message)
elif msg[0] == RPC_MSG_RESPONSE:
_handle_response(msg)
elif msg[0] == RPC_MSG_NOTIFY:
@ -384,17 +393,5 @@ def _handle_request(request):
raise ApiException(desc='Invalid type for RPC parameter.')
def _send_success_response(rpc_session, sock, request, result):
response = rpc_session.create_success_response(request[RPC_IDX_MSG_ID],
result)
sock.sendall(response)
def _send_error_response(rpc_session, sock, request, emsg):
response = rpc_session.create_error_response(request[RPC_IDX_MSG_ID],
str(emsg))
sock.sendall(response)
# Network controller singleton
NET_CONTROLLER = _NetworkController()