func clientsTalk(clients []*stamp.Client, nRounds, nMessages int, s *stamp.Server) { // have client send messages for r := 0; r < nRounds; r++ { var wg sync.WaitGroup for _, client := range clients { for i := 0; i < nMessages; i++ { messg := []byte("messg" + strconv.Itoa(r) + strconv.Itoa(i)) wg.Add(1) go func(client *stamp.Client, messg []byte, s *stamp.Server, i int) { defer wg.Done() client.TimeStamp(messg, s.Name()) }(client, messg, s, r) } } // wait between rounds wg.Wait() } }
// Create nClients for the TSServer, with first client associated with number fClient func createClientsForTSServer(nClients int, s *stamp.Server, dir *coconet.GoDirectory, fClient int) []*stamp.Client { clients := make([]*stamp.Client, 0, nClients) for i := 0; i < nClients; i++ { clients = append(clients, stamp.NewClient("client"+strconv.Itoa(fClient+i))) // intialize TSServer conn to client ngc, err := coconet.NewGoConn(dir, s.Name(), clients[i].Name()) if err != nil { panic(err) } s.Clients[clients[i].Name()] = ngc // intialize client connection to sn ngc, err = coconet.NewGoConn(dir, clients[i].Name(), s.Name()) if err != nil { panic(err) } clients[i].AddServer(s.Name(), ngc) } return clients }