commit
4fc350e622
401 changed files with 4745 additions and 3852 deletions
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,93 +0,0 @@ |
||||
//
|
||||
//
|
||||
// Copyright 2018 gRPC authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//
|
||||
|
||||
#include <grpc/support/port_platform.h> |
||||
|
||||
#include "src/core/client_channel/client_channel_channelz.h" |
||||
|
||||
#include "absl/strings/str_cat.h" |
||||
|
||||
#include <grpc/support/json.h> |
||||
|
||||
#include "src/core/lib/transport/connectivity_state.h" |
||||
|
||||
// IWYU pragma: no_include <type_traits>
|
||||
|
||||
namespace grpc_core { |
||||
namespace channelz { |
||||
|
||||
SubchannelNode::SubchannelNode(std::string target_address, |
||||
size_t channel_tracer_max_nodes) |
||||
: BaseNode(EntityType::kSubchannel, target_address), |
||||
target_(std::move(target_address)), |
||||
trace_(channel_tracer_max_nodes) {} |
||||
|
||||
SubchannelNode::~SubchannelNode() {} |
||||
|
||||
void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) { |
||||
connectivity_state_.store(state, std::memory_order_relaxed); |
||||
} |
||||
|
||||
void SubchannelNode::SetChildSocket(RefCountedPtr<SocketNode> socket) { |
||||
MutexLock lock(&socket_mu_); |
||||
child_socket_ = std::move(socket); |
||||
} |
||||
|
||||
Json SubchannelNode::RenderJson() { |
||||
// Create and fill the data child.
|
||||
grpc_connectivity_state state = |
||||
connectivity_state_.load(std::memory_order_relaxed); |
||||
Json::Object data = { |
||||
{"state", Json::FromObject({ |
||||
{"state", Json::FromString(ConnectivityStateName(state))}, |
||||
})}, |
||||
{"target", Json::FromString(target_)}, |
||||
}; |
||||
// Fill in the channel trace if applicable
|
||||
Json trace_json = trace_.RenderJson(); |
||||
if (trace_json.type() != Json::Type::kNull) { |
||||
data["trace"] = std::move(trace_json); |
||||
} |
||||
// Ask CallCountingHelper to populate call count data.
|
||||
call_counter_.PopulateCallCounts(&data); |
||||
// Construct top-level object.
|
||||
Json::Object object{ |
||||
{"ref", Json::FromObject({ |
||||
{"subchannelId", Json::FromString(absl::StrCat(uuid()))}, |
||||
})}, |
||||
{"data", Json::FromObject(std::move(data))}, |
||||
}; |
||||
// Populate the child socket.
|
||||
RefCountedPtr<SocketNode> child_socket; |
||||
{ |
||||
MutexLock lock(&socket_mu_); |
||||
child_socket = child_socket_; |
||||
} |
||||
if (child_socket != nullptr && child_socket->uuid() != 0) { |
||||
object["socketRef"] = Json::FromArray({ |
||||
Json::FromObject({ |
||||
{"socketId", Json::FromString(absl::StrCat(child_socket->uuid()))}, |
||||
{"name", Json::FromString(child_socket->name())}, |
||||
}), |
||||
}); |
||||
} |
||||
return Json::FromObject(object); |
||||
} |
||||
|
||||
} // namespace channelz
|
||||
} // namespace grpc_core
|
@ -1,85 +0,0 @@ |
||||
//
|
||||
//
|
||||
// Copyright 2018 gRPC authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H |
||||
#define GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H |
||||
|
||||
#include <grpc/support/port_platform.h> |
||||
|
||||
#include <stddef.h> |
||||
|
||||
#include <atomic> |
||||
#include <string> |
||||
#include <utility> |
||||
|
||||
#include "absl/base/thread_annotations.h" |
||||
|
||||
#include <grpc/impl/connectivity_state.h> |
||||
#include <grpc/slice.h> |
||||
|
||||
#include "src/core/lib/channel/channel_trace.h" |
||||
#include "src/core/lib/channel/channelz.h" |
||||
#include "src/core/lib/gprpp/ref_counted_ptr.h" |
||||
#include "src/core/lib/gprpp/sync.h" |
||||
#include "src/core/lib/json/json.h" |
||||
|
||||
namespace grpc_core { |
||||
namespace channelz { |
||||
|
||||
class SubchannelNode final : public BaseNode { |
||||
public: |
||||
SubchannelNode(std::string target_address, size_t channel_tracer_max_nodes); |
||||
~SubchannelNode() override; |
||||
|
||||
// Sets the subchannel's connectivity state without health checking.
|
||||
void UpdateConnectivityState(grpc_connectivity_state state); |
||||
|
||||
// Used when the subchannel's child socket changes. This should be set when
|
||||
// the subchannel's transport is created and set to nullptr when the
|
||||
// subchannel unrefs the transport.
|
||||
void SetChildSocket(RefCountedPtr<SocketNode> socket); |
||||
|
||||
Json RenderJson() override; |
||||
|
||||
// proxy methods to composed classes.
|
||||
void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) { |
||||
trace_.AddTraceEvent(severity, data); |
||||
} |
||||
void AddTraceEventWithReference(ChannelTrace::Severity severity, |
||||
const grpc_slice& data, |
||||
RefCountedPtr<BaseNode> referenced_channel) { |
||||
trace_.AddTraceEventWithReference(severity, data, |
||||
std::move(referenced_channel)); |
||||
} |
||||
void RecordCallStarted() { call_counter_.RecordCallStarted(); } |
||||
void RecordCallFailed() { call_counter_.RecordCallFailed(); } |
||||
void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); } |
||||
|
||||
private: |
||||
std::atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE}; |
||||
Mutex socket_mu_; |
||||
RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_); |
||||
std::string target_; |
||||
CallCountingHelper call_counter_; |
||||
ChannelTrace trace_; |
||||
}; |
||||
|
||||
} // namespace channelz
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif // GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue