NewService creates new observer service and load previous subscription from the meta database.
()
| 114 | |
| 115 | // NewService creates new observer service and load previous subscription from the meta database. |
| 116 | func NewService() (service *Service, err error) { |
| 117 | // open observer database |
| 118 | dbFile := filepath.Join(conf.GConf.WorkingRoot, dbFileName) |
| 119 | |
| 120 | db, err := xs.NewSqlite(dbFile) |
| 121 | if err != nil { |
| 122 | return |
| 123 | } |
| 124 | |
| 125 | defer func() { |
| 126 | if err != nil { |
| 127 | _ = db.Close() |
| 128 | } |
| 129 | }() |
| 130 | |
| 131 | for _, q := range initTableSQL { |
| 132 | if _, err = db.Writer().Exec(q); err != nil { |
| 133 | err = errors.Wrap(err, "init table failed") |
| 134 | return |
| 135 | } |
| 136 | } |
| 137 | |
| 138 | // init service |
| 139 | service = &Service{ |
| 140 | db: db, |
| 141 | caller: rpc.NewCallerWithPool(mux.GetSessionPoolInstance()), |
| 142 | } |
| 143 | |
| 144 | // load previous subscriptions |
| 145 | rows, err := db.Writer().Query(getAllSubscriptionsSQL) |
| 146 | if err != nil { |
| 147 | err = errors.Wrap(err, "query previous subscriptions failed") |
| 148 | return |
| 149 | } |
| 150 | |
| 151 | defer func() { |
| 152 | _ = rows.Close() |
| 153 | }() |
| 154 | |
| 155 | for rows.Next() { |
| 156 | var ( |
| 157 | rawDBID string |
| 158 | count int32 |
| 159 | ) |
| 160 | |
| 161 | if err = rows.Scan(&rawDBID, &count); err != nil { |
| 162 | err = errors.Wrap(err, "scan subscriptions failed") |
| 163 | return |
| 164 | } |
| 165 | |
| 166 | dbID := proto.DatabaseID(rawDBID) |
| 167 | |
| 168 | service.subscription.Store(dbID, newSubscribeWorker(dbID, count, service)) |
| 169 | } |
| 170 | |
| 171 | return |
| 172 | } |
| 173 |
no test coverage detected