Kepler core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

118 lines
2.6 KiB

package service
import (
"errors"
"net/http"
"database/sql"
_ "github.com/lib/pq"
"cygnux/kepler/restlet"
"cygnux/kepler/cache"
"cygnux/kepler/kv"
"cygnux/kepler/configs"
)
type RequestContext struct {
_request *http.Request
_service *KeplerService
}
func NewRequestContext(service *KeplerService, request *http.Request) *RequestContext {
ctx := &RequestContext{_service: service }
ctx._request = request
return ctx
}
func (self *RequestContext) SQL() *sql.DB {
return self._service.db
}
func (self *RequestContext) Schema() string {
return self._service.db_schema
}
func (self *RequestContext) Cache() cache.Cache {
return self._service.cache
}
func (self *RequestContext) Config() configs.ParameterOption {
return self._service.params
}
func (self *RequestContext) Chan(topic string, objs ...interface{}) error {
if len(objs) < 1 {
return errors.New("No Object!")
}
taskObj := restlet.TaskObject{Queue:topic, Params:objs}
self._service._task_chan <- taskObj
return nil
}
func (self *RequestContext) Publish(topic string, datas ...[]byte) error {
for _, x := range datas {
e := self._service.mpub.Publish(topic, x)
if nil != e {
return e
}
}
return nil
}
func (self *RequestContext) KV() kv.KV {
return self._service.kvstore
}
func (self *RequestContext) Request() *http.Request {
return self._request
}
type TaskContext struct {
_service *KeplerService
}
func NewTaskContext(service *KeplerService) *TaskContext {
ctx := &TaskContext{_service: service }
return ctx
}
func (self *TaskContext) SQL() *sql.DB {
return self._service.db
}
func (self *TaskContext) Schema() string {
return self._service.db_schema
}
func (self *TaskContext) Chan(topic string, objs ...interface{}) error {
if len(objs) < 1 {
return errors.New("No Object!")
}
taskObj := restlet.TaskObject{Queue:topic, Params:objs}
self._service._task_chan <- taskObj
return nil
}
func (self *TaskContext) Publish(topic string, datas ...[]byte) error {
for _, x := range datas {
e := self._service.mpub.Publish(topic, x)
if nil != e {
return e
}
}
return nil
}
func (self *TaskContext) Cache() cache.Cache {
return self._service.cache
}
func (self *TaskContext) Config() configs.ParameterOption {
return self._service.params
}
func (self *TaskContext) KV() kv.KV {
return self._service.kvstore
}