(url string)
| 142 | } |
| 143 | |
| 144 | func UploadNodeState(url string) { |
| 145 | helloUrl := fmt.Sprintf("%s/hello", url) |
| 146 | stateUrl := fmt.Sprintf("%s/reportstate", url) |
| 147 | states := make([]IState, 0) |
| 148 | |
| 149 | for i := 0; i < TotalPeer; i++ { |
| 150 | s := generateState() |
| 151 | states = append(states, s) |
| 152 | _, err := sendMessage(helloUrl, s.ID()) |
| 153 | if err != nil { |
| 154 | log.Warn("Send message to resp", "err", err.Error()) |
| 155 | return |
| 156 | } |
| 157 | } |
| 158 | |
| 159 | sendStates := func() { |
| 160 | for _, s := range states { |
| 161 | s.Update() |
| 162 | data, err := s.Serialize() |
| 163 | if err != nil { |
| 164 | log.Info("Fail to Marshal node state", "error", err.Error()) |
| 165 | continue |
| 166 | } |
| 167 | res, err := sendMessage(stateUrl, data) |
| 168 | if err != nil { |
| 169 | log.Info("Fail to upload node state", "id", s.ID(), "error", err.Error()) |
| 170 | } else { |
| 171 | log.Info("get response", "Serialize data", data, "response", res) |
| 172 | } |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | sendStates() |
| 177 | ticker := time.NewTicker(1 * time.Minute) |
| 178 | defer ticker.Stop() |
| 179 | for { |
| 180 | select { |
| 181 | case <-ticker.C: |
| 182 | sendStates() |
| 183 | } |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | func generateState() IState { |
| 188 | privateKey, _ := ecdsa.GenerateKey(crypto.S256(), crand.Reader) |
no test coverage detected