Partially refactored ServiceClient, tests are failing, the code is totally broken

This commit is contained in:
Pavel Kirienko
2015-05-15 18:41:38 +03:00
parent ee761eebad
commit 282b995c1e
15 changed files with 435 additions and 307 deletions
@@ -327,9 +327,9 @@ class RaftCore : private TimerBase
for (uint8_t i = 0; i < NumRequestVoteClients; i++)
{
request_vote_clients_[i]->cancel();
request_vote_clients_[i]->cancelAll(); // TODO FIXME Concurrent calls!!
}
append_entries_client_.cancel();
append_entries_client_.cancelAll();
/*
* Calling the switch handler
@@ -550,22 +550,23 @@ class RaftCore : private TimerBase
return;
}
if (result.response.term > persistent_state_.getCurrentTerm())
if (result.getResponse().term > persistent_state_.getCurrentTerm())
{
tryIncrementCurrentTermFromResponse(result.response.term);
tryIncrementCurrentTermFromResponse(result.getResponse().term);
}
else
{
if (result.response.success)
if (result.getResponse().success)
{
cluster_.incrementServerNextIndexBy(result.server_node_id, pending_append_entries_fields_.num_entries);
cluster_.setServerMatchIndex(result.server_node_id,
cluster_.incrementServerNextIndexBy(result.getCallID().server_node_id,
pending_append_entries_fields_.num_entries);
cluster_.setServerMatchIndex(result.getCallID().server_node_id,
Log::Index(pending_append_entries_fields_.prev_log_index +
pending_append_entries_fields_.num_entries));
}
else
{
cluster_.decrementServerNextIndex(result.server_node_id);
cluster_.decrementServerNextIndex(result.getCallID().server_node_id);
}
}
@@ -654,15 +655,15 @@ class RaftCore : private TimerBase
return;
}
trace(TraceRaftVoteRequestSucceeded, result.server_node_id.get());
trace(TraceRaftVoteRequestSucceeded, result.getCallID().server_node_id.get());
if (result.response.term > persistent_state_.getCurrentTerm())
if (result.getResponse().term > persistent_state_.getCurrentTerm())
{
tryIncrementCurrentTermFromResponse(result.response.term);
tryIncrementCurrentTermFromResponse(result.getResponse().term);
}
else
{
if (result.response.vote_granted)
if (result.getResponse().vote_granted)
{
num_votes_received_in_this_campaign_++;
}
@@ -235,14 +235,14 @@ class NodeDiscoverer : TimerBase
if (result.isSuccessful())
{
UAVCAN_TRACE("dynamic_node_id_server::NodeDiscoverer", "GetNodeInfo response from %d",
int(result.server_node_id.get()));
finalizeNodeDiscovery(&result.response.hardware_version.unique_id, result.server_node_id);
int(result.getCallID().server_node_id.get()));
finalizeNodeDiscovery(&result.getResponse().hardware_version.unique_id, result.getCallID().server_node_id);
}
else
{
trace(TraceDiscoveryGetNodeInfoFailure, result.server_node_id.get());
trace(TraceDiscoveryGetNodeInfoFailure, result.getCallID().server_node_id.get());
NodeData* const data = node_map_.access(result.server_node_id);
NodeData* const data = node_map_.access(result.getCallID().server_node_id);
if (data == NULL)
{
return; // Probably it is a known node now
@@ -250,11 +250,11 @@ class NodeDiscoverer : TimerBase
UAVCAN_TRACE("dynamic_node_id_server::NodeDiscoverer",
"GetNodeInfo request to %d has timed out, %d attempts",
int(result.server_node_id.get()), int(data->num_get_node_info_attempts));
int(result.getCallID().server_node_id.get()), int(data->num_get_node_info_attempts));
data->num_get_node_info_attempts++;
if (data->num_get_node_info_attempts >= MaxAttemptsToGetNodeInfo)
{
finalizeNodeDiscovery(NULL, result.server_node_id);
finalizeNodeDiscovery(NULL, result.getCallID().server_node_id);
// Warning: data pointer is invalidated now
}
}
@@ -262,7 +262,7 @@ class NodeDiscoverer : TimerBase
void handleTimerEvent(const TimerEvent&)
{
if (get_node_info_client_.isPending())
if (get_node_info_client_.hasPendingCalls())
{
return;
}