forked from couchbase/indexing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
admin_manager.go
71 lines (55 loc) · 1.76 KB
/
admin_manager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright (c) 2014 Couchbase, Inc.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.
package indexer
import (
"github.com/couchbase/indexing/secondary/logging"
)
//AdminManager listens to the admin port messages and relays it back to Indexer
type AdminManager interface {
}
type adminMgr struct {
supvCmdch MsgChannel //supervisor sends commands on this channel
supvRespch MsgChannel //channel to send any message to supervisor
}
func NewAdminManager(supvCmdch MsgChannel, supvRespch MsgChannel) (
AdminManager, Message) {
//Init the adminMgr struct
a := &adminMgr{
supvCmdch: supvCmdch,
supvRespch: supvRespch,
}
//start Admin Manager loop which listens to commands from its supervisor
go a.run()
return a, &MsgSuccess{}
}
//run starts the admin manager loop which listens to messages
//from it supervisor(indexer)
func (a *adminMgr) run() {
//main Admin Manager loop
loop:
for {
select {
case cmd, ok := <-a.supvCmdch:
if ok {
if cmd.GetMsgType() == ADMIN_MGR_SHUTDOWN {
logging.Infof("Admin Manager: Shutting Down")
a.supvCmdch <- &MsgSuccess{}
break loop
}
a.handleSupvervisorCommands(cmd)
} else {
//supervisor channel closed. exit
break loop
}
}
}
}
func (a *adminMgr) handleSupvervisorCommands(cmd Message) {
//TODO
}