casper

package module
v0.0.0-...-b04e6a3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2015 License: Apache-2.0 Imports: 17 Imported by: 1

README

casper

Obsoleted project, please move the new porject: github.com/gogap/spirit

该项目已废弃,请移步到 github.com/gogap/spirit

A FBP framwoker

一个组件,可以实现一个业务功能, 也可以实现多个。
一条消息,可以流经任意多个组件。
组件加工消息并传递, 同时跟据消息触发业务逻辑。

每个组件,可以配置成一个一般业务组件, 也可以配置成为一个服务。
服务本身也是一个组件。
服务相对一般组件所增加的功能, 就是:可以接收外部请求。

服务可以向外提供很多不同的具体"服务".
每个具体服务对应一条具体的消息格式, 和, 一串业务组件调用链. "graph"定义此链。

现在实现的zmq的消息方式, HTTP和zmq的服务.

Documentation

Overview

组件

Index

Constants

View Source
const (
	REQ_TIMEOUT = time.Duration(15) * time.Second
	REQ_X_API   = "X-API"
)
View Source
const (
	CTX_HTTP_COOKIES = "CTX_HTTP_COOKIES"
	CTX_HTTP_HEADERS = "CTX_HTTP_HEADERS"

	CMD_HTTP_HEADERS_SET = "CMD_HTTP_HEADERS_SET"
	CMD_HTTP_COOKIES_SET = "CMD_HTTP_COOKIES_SET"
)
View Source
const (
	DefaultAPIHeader = "X-API"
)

Variables

This section is empty.

Functions

func BuildApp

func BuildApp(filePath string)

func BuildApps

func BuildApps(filePaths []string)

func BuildComponent

func BuildComponent(fileName string)

func BuildHandlerRotatorConfig

func BuildHandlerRotatorConfig(configPath string)

func RegisterEntrances

func RegisterEntrances(entrances ...Entrance)

func SetEntranceFactory

func SetEntranceFactory(factory EntranceFactory)

func SetHandlers

func SetHandlers(handlers ComponentHandlers)

func SingleInstane

func SingleInstane(pidfile string)

Types

type App

type App struct {
	Component
	Entrance
	// contains filtered or unexported fields
}

func GetAppByName

func GetAppByName(name string) *App

func NewApp

func NewApp(appConf AppConfig) (app *App, err error)

func (*App) Run

func (p *App) Run()

type AppConfig

type AppConfig struct {
	Name        string              `json:"name"`
	Description string              `json:"description"`
	In          string              `json:"in"`
	MQType      string              `json:"mq_type"`
	Entrance    EntranceOptions     `json:"entrance"`
	Graphs      map[string][]string `json:"graphs"`
}

func (*AppConfig) ComponentConfig

func (p *AppConfig) ComponentConfig() ComponentConfig

type CasperConfigs

type CasperConfigs struct {
	Apps       []AppConfig       `json:"apps"`
	Components []ComponentConfig `json:"components"`
}

type Component

type Component struct {
	Name        string
	Description string
	// contains filtered or unexported fields
}

组件

func GetComponentByName

func GetComponentByName(name string) *Component

func NewComponent

func NewComponent(conf ComponentConfig) (component *Component, err error)

func NewComponentWithMessenger

func NewComponentWithMessenger(conf ComponentConfig, messenger Messenger) (component *Component, err error)

func (*Component) GetComponentConfig

func (p *Component) GetComponentConfig() ComponentConfig

func (*Component) Metadata

func (p *Component) Metadata() ComponentMetadata

func (*Component) Run

func (p *Component) Run() (err error)

func (*Component) SendMsg

func (p *Component) SendMsg(comMsg *ComponentMessage)

func (*Component) SetHandler

func (p *Component) SetHandler(handler ComponentHandler) *Component

type ComponentConfig

type ComponentConfig struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	MQType      string `json:"mq_type"`
	In          string `json:"in"`
}

func (*ComponentConfig) Metadata

func (p *ComponentConfig) Metadata() ComponentMetadata

type ComponentHandler

type ComponentHandler func(*Payload) (result interface{}, err error)

type ComponentHandlers

type ComponentHandlers map[string]ComponentHandler

type ComponentMessage

type ComponentMessage struct {
	Id string `json:"id"`

	Payload *Payload `json:"payload"`
	// contains filtered or unexported fields
}

func CallService

func CallService(serviceType, addr string, msg *ComponentMessage) (reply *ComponentMessage, err error)

func NewComponentMessage

func NewComponentMessage(entrance *ComponentMetadata, result interface{}) (msg *ComponentMessage, err error)

func (*ComponentMessage) FromJson

func (p *ComponentMessage) FromJson(jsonStr []byte) (err error)

func (*ComponentMessage) PopGraph

func (p *ComponentMessage) PopGraph() *ComponentMetadata

func (*ComponentMessage) Serialize

func (p *ComponentMessage) Serialize() ([]byte, error)

func (*ComponentMessage) SetEntrance

func (p *ComponentMessage) SetEntrance(entrance ComponentMetadata)

func (*ComponentMessage) TopGraph

func (p *ComponentMessage) TopGraph() *ComponentMetadata

type ComponentMetadata

type ComponentMetadata struct {
	Name   string `json:"name"`
	MQType string `json:"mq_type"`
	In     string `json:"in"`
}

type DefaultEntranceFactory

type DefaultEntranceFactory struct {
	// contains filtered or unexported fields
}

func NewDefaultEntranceFactory

func NewDefaultEntranceFactory() *DefaultEntranceFactory

func (*DefaultEntranceFactory) NewEntrance

func (p *DefaultEntranceFactory) NewEntrance(messengerr Messenger, typ string, configs EntranceConfig) Entrance

func (*DefaultEntranceFactory) RegisterEntrance

func (p *DefaultEntranceFactory) RegisterEntrance(entrance Entrance)

type EndPoint

type EndPoint struct {
	MessageQueue
	ComponentMetadata
}

端点

type Entrance

type Entrance interface {
	Type() string
	Init(messenger Messenger, configs EntranceConfig) error
	Run() error
}

type EntranceConfig

type EntranceConfig map[string]interface{}

func (EntranceConfig) FillToObject

func (p EntranceConfig) FillToObject(v interface{}) (err error)

func (EntranceConfig) GetConfigString

func (p EntranceConfig) GetConfigString(sectionName string) (value string, ok bool)

type EntranceFactory

type EntranceFactory interface {
	RegisterEntrance(entrance Entrance)
	NewEntrance(messengerr Messenger, typ string, configs EntranceConfig) Entrance
}

type EntranceMartini

type EntranceMartini struct {
	// contains filtered or unexported fields
}

func (*EntranceMartini) Init

func (p *EntranceMartini) Init(messenger Messenger, configs EntranceConfig) (err error)

func (*EntranceMartini) Run

func (p *EntranceMartini) Run() error

func (*EntranceMartini) Type

func (p *EntranceMartini) Type() string

type EntranceMartiniConf

type EntranceMartiniConf struct {
	Host   string `json:"host"`
	Port   int32  `json:"port"`
	Domain string `json:"domain"`
	Path   string `json:"path"`

	AllowOrigin  []string              `json:"allow_origin"`
	AllowHeaders []string              `json:"allow_headers"`
	P3P          string                `json:"p3p"`
	Server       string                `json:"server"`
	ToContext    EntranceToContextConf `json:"to_context"`
	// contains filtered or unexported fields
}

func (*EntranceMartiniConf) GetListenAddress

func (p *EntranceMartiniConf) GetListenAddress() string

type EntranceOptions

type EntranceOptions struct {
	Type    string         `json:"type"`
	Options EntranceConfig `json:"options"`
}

type EntranceToContextConf

type EntranceToContextConf struct {
	Cookies []string `json:"cookies"`
	Headers []string `json:"headers"`
}

type EntranceZMQ

type EntranceZMQ struct {
	// contains filtered or unexported fields
}

func (*EntranceZMQ) EntranceZMQHandler

func (p *EntranceZMQ) EntranceZMQHandler()

func (*EntranceZMQ) Init

func (p *EntranceZMQ) Init(messenger Messenger, configs EntranceConfig) (err error)

func (*EntranceZMQ) Run

func (p *EntranceZMQ) Run() error

func (*EntranceZMQ) Type

func (p *EntranceZMQ) Type() string

type Graphs

type Graphs map[string][]string

type HandlerRotator

type HandlerRotator struct {
	// contains filtered or unexported fields
}

func NewHandlerRotator

func NewHandlerRotator(componentName string, handlers RotatorParams) (rotator *HandlerRotator)

func (*HandlerRotator) Handler

func (p *HandlerRotator) Handler(payload *Payload) (interface{}, error)

func (*HandlerRotator) Rotate

func (p *HandlerRotator) Rotate(name string) error

type HttpResponse

type HttpResponse struct {
	Code    uint64      `json:"code"`
	Message string      `json:"message,omitempty"`
	Result  interface{} `json:"result,omitempty"`
}

type MQChanMessenger

type MQChanMessenger struct {
	// contains filtered or unexported fields
}

func NewMQChanMessenger

func NewMQChanMessenger(graphs Graphs, compMetadata ComponentMetadata) *MQChanMessenger

func (*MQChanMessenger) GetGraph

func (p *MQChanMessenger) GetGraph(name string) []string

func (*MQChanMessenger) NewMessage

func (p *MQChanMessenger) NewMessage(result interface{}) (msg *ComponentMessage, err error)

func (*MQChanMessenger) OnMessageEvent

func (p *MQChanMessenger) OnMessageEvent(msgId string, event MessageEvent)

func (*MQChanMessenger) ReceiveMessage

func (p *MQChanMessenger) ReceiveMessage(msg *ComponentMessage) (err error)

func (*MQChanMessenger) SendMessage

func (p *MQChanMessenger) SendMessage(graphName string, comMsg *ComponentMessage) (msgId string, ch chan *Payload, err error)

func (*MQChanMessenger) SendToComponent

func (p *MQChanMessenger) SendToComponent(compMetadata *ComponentMetadata, msg []byte) (total int, err error)

type MessageEvent

type MessageEvent int32
const (
	MSG_EVENT_PROCESSED MessageEvent = 1
)

type MessageQueue

type MessageQueue interface {
	Ready() error                   // 初始化
	RecvMessage() ([]byte, error)   // 读一条消息
	SendToNext([]byte) (int, error) // 发送一条消息到下一节点
}

消息接口

func NewMQ

func NewMQ(compMeta *ComponentMetadata) (mq MessageQueue, err error)

func NewMqZmq

func NewMqZmq(url string) MessageQueue

type Messenger

type Messenger interface {
	NewMessage(result interface{}) (msg *ComponentMessage, err error)
	ReceiveMessage(msg *ComponentMessage) (err error)
	SendMessage(graphName string, comMsg *ComponentMessage) (msgId string, ch chan *Payload, err error)
	SendToComponent(compMetadata *ComponentMetadata, msg []byte) (total int, err error)
	OnMessageEvent(msgId string, event MessageEvent)
}

type NameValue

type NameValue struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type Payload

type Payload struct {
	Code    uint64 `json:"code"`
	Message string `json:"message"`
	// contains filtered or unexported fields
}

func (*Payload) AppendCommand

func (p *Payload) AppendCommand(command string, value interface{})

func (*Payload) GetCommand

func (p *Payload) GetCommand(key string) (val []interface{}, exist bool)

func (*Payload) GetCommandObjectArray

func (p *Payload) GetCommandObjectArray(command string, values []interface{}) (err error)

func (*Payload) GetCommandStringArray

func (p *Payload) GetCommandStringArray(command string) (vals []string, err error)

func (*Payload) GetCommandValueSize

func (p *Payload) GetCommandValueSize(key string) int

func (*Payload) GetContext

func (p *Payload) GetContext(key string) (val interface{}, exist bool)

func (*Payload) GetContextInt

func (p *Payload) GetContextInt(key string) (val int, err error)

func (*Payload) GetContextInt32

func (p *Payload) GetContextInt32(key string) (val int32, err error)

func (*Payload) GetContextInt64

func (p *Payload) GetContextInt64(key string) (val int64, err error)

func (*Payload) GetContextObject

func (p *Payload) GetContextObject(key string, v interface{}) (err error)

func (*Payload) GetContextString

func (p *Payload) GetContextString(key string) (val string, err error)

func (*Payload) GetContextStringArray

func (p *Payload) GetContextStringArray(key string) (vals []string, err error)

func (*Payload) GetResult

func (p *Payload) GetResult() interface{}

func (*Payload) SetCommand

func (p *Payload) SetCommand(command string, values []interface{})

func (*Payload) SetContext

func (p *Payload) SetContext(key string, val interface{})

func (*Payload) SetResult

func (p *Payload) SetResult(result interface{})

func (*Payload) UnmarshalResult

func (p *Payload) UnmarshalResult(v interface{}) (err error)

type RotatorParams

type RotatorParams map[string]handler

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL