public async Task StartWorkNode(ClusterCommand command)
        {
            //create
            RaftEntitySettings re_settings = null;
            List <int>         ipAddress   = new List <int>();

            for (int i = 0; i < command.IpAddress.Count; i++)
            {
                ipAddress.Add(command.IpAddress[i].port);
            }
            re_settings = new RaftEntitySettings()
            {
                VerboseRaft                = true,
                VerboseTransport           = true,
                DelayedPersistenceIsActive = true,
            };
            List <LockSeriveControlNode> nodes = new List <LockSeriveControlNode>();
            List <PeerEndPoint>          eps   = new List <PeerEndPoint>();
            //every node have seperate configuration
            var order = command.Targets.IndexOf(this.nodeName);

            for (int index = 0; index < command.IpAddress.Count; index++)
            {
                eps.Add(new PeerEndPoint()
                {
                    Host = "127.0.0.1", Port = ipAddress[index]
                });
            }
            int Port     = eps[order].Port;
            var nodeName = this.nodeName + "_worker";

            this.wrk = new RaftServiceNode(
                new NodeSettings()
            {
                TcpClusterEndPoints  = eps,
                RaftEntitiesSettings = re_settings
            },
                LockClusterManager.PathRoot + nodeName,
                new WorkerHandler(this),
                Port,
                nodeName + "_Control",
                logger);
            wrk.Start();

            await Task.Delay(2000);

            await wrk.StartConnect();
        }
 public async Task JoinShard(ClusterCommand command)
 {
     //create a node from name and start the network
     await StartWorkNode(command);
 }