()
| 106 | } |
| 107 | |
| 108 | func (s *Service) start() (err error) { |
| 109 | // query sqlchain profile for peers info |
| 110 | var ( |
| 111 | req = new(types.QuerySQLChainProfileReq) |
| 112 | resp = new(types.QuerySQLChainProfileResp) |
| 113 | ) |
| 114 | |
| 115 | req.DBID = s.dbID |
| 116 | |
| 117 | if err = rpc.RequestBP(route.MCCQuerySQLChainProfile.String(), req, resp); err != nil { |
| 118 | err = errors.Wrap(err, "get peers for database failed") |
| 119 | return |
| 120 | } else if len(resp.Profile.Miners) == 0 { |
| 121 | err = errors.Wrap(err, "get empty peers for database") |
| 122 | return |
| 123 | } |
| 124 | |
| 125 | s.upstream = resp.Profile.Miners[0].NodeID |
| 126 | |
| 127 | // start subscriptions |
| 128 | s.wg.Add(2) |
| 129 | go s.run() |
| 130 | go func() { |
| 131 | defer s.wg.Done() |
| 132 | s.server.Serve() |
| 133 | }() |
| 134 | |
| 135 | return |
| 136 | } |
| 137 | |
| 138 | func (s *Service) run() { |
| 139 | defer s.wg.Done() |
no test coverage detected