func receiveShellCommand()

in Sources/DistributedActors/Cluster/ClusterShell.swift [461:495]


        func receiveShellCommand(_ context: _ActorContext<Message>, command: CommandMessage) -> _Behavior<Message> {
            state.tracelog(.inbound, message: command)

            switch command {
            case .handshakeWith(let node):
                return self.beginHandshake(context, state, with: node)
            case .handshakeWithSpecific(let uniqueNode):
                return self.beginHandshake(context, state, with: uniqueNode.node)
            case .retryHandshake(let initiated):
                return self.retryHandshake(context, state, initiated: initiated)

            case .failureDetectorReachabilityChanged(let node, let reachability):
                guard let member = state.membership.uniqueMember(node) else {
                    return .same // reachability change of unknown node
                }
                switch reachability {
                case .reachable:
                    return self.onReachabilityChange(context, state: state, change: Cluster.ReachabilityChange(member: member.asReachable))
                case .unreachable:
                    return self.onReachabilityChange(context, state: state, change: Cluster.ReachabilityChange(member: member.asUnreachable))
                }

            case .shutdown(let receptacle):
                return self.onShutdownCommand(context, state: state, signalOnceUnbound: receptacle)

            case .downCommand(let node):
                if let member = state.membership.member(node) {
                    return self.ready(state: self.onDownCommand(context, state: state, member: member))
                } else {
                    return self.ready(state: state)
                }
            case .downCommandMember(let member):
                return self.ready(state: self.onDownCommand(context, state: state, member: member))
            }
        }