예제 #1
0
파일: pqueue.go 프로젝트: jmptrader/firempq
func LoadPQueue(desc *common.ServiceDescription) (iface.ISvc, error) {
	config := &PQConfig{}
	database := db.GetDatabase()
	err := database.LoadServiceConfig(config, common.MakeServiceId(desc))
	if err != nil {
		return nil, err
	}
	pq := initPQueue(desc, config)
	return pq, nil
}
예제 #2
0
파일: pqueue.go 프로젝트: jmptrader/firempq
func initPQueue(desc *common.ServiceDescription, config *PQConfig) *PQueue {
	pq := PQueue{
		desc:               desc,
		config:             config,
		msgMap:             make(map[string]*PQMessage),
		availMsgs:          structs.NewActiveQueues(config.MaxPriority),
		expireHeap:         structs.NewIndexHeap(),
		inFlightHeap:       structs.NewIndexHeap(),
		database:           db.GetDatabase(),
		newMsgNotification: make(chan bool),
		msgSerialNumber:    0,
		serviceId:          common.MakeServiceId(desc),
	}

	pq.loadAllMessages()
	return &pq
}