forked from Velocidex/velociraptor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqueue.go
35 lines (27 loc) · 1.03 KB
/
queue.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
package file_store
import (
"errors"
"fmt"
config_proto "www.velocidex.com/golang/velociraptor/config/proto"
"www.velocidex.com/golang/velociraptor/file_store/api"
"www.velocidex.com/golang/velociraptor/file_store/directory"
"www.velocidex.com/golang/velociraptor/file_store/memory"
"www.velocidex.com/golang/velociraptor/file_store/mysql"
)
// GetQueueManager selects an appropriate QueueManager object based on
// config.
func GetQueueManager(config_obj *config_proto.Config) (api.QueueManager, error) {
file_store := GetFileStore(config_obj)
switch config_obj.Datastore.Implementation {
// For now everyone uses an in-memory queue manager.
case "Test":
return memory.NewMemoryQueueManager(config_obj, file_store), nil
case "FileBaseDataStore":
return directory.NewDirectoryQueueManager(config_obj, file_store), nil
case "MySQL":
return mysql.NewMysqlQueueManager(file_store.(*mysql.SqlFileStore)), nil
default:
return nil, errors.New(fmt.Sprintf("Unsupported QueueManager %v",
config_obj.Datastore.Implementation))
}
}