Documentation ¶
Index ¶
- Constants
- Variables
- func Clear()
- func CloseClient(user string, clientID string) bool
- func CloseMessage(user string, types ...string)
- func Default() *userNotices
- func DownloadProxyFn(np NProgressor) func(name string, download int, size int64, r io.Reader) io.Reader
- func GetClientID(eCtx echo.Context) string
- func GetNoticeID(eCtx echo.Context) string
- func GetNoticeMode(eCtx echo.Context) string
- func Initialize()
- func IsOnline(user string) bool
- func NewUserNotices(debug bool, users IOnlineUsers) *userNotices
- func OnClose(fn ...func(user string)) *userNotices
- func OnOpen(fn ...func(user string)) *userNotices
- func OnlineStatus(users ...string) map[string]bool
- func OnlineUserCount() int
- func OnlineUserList(limit int) []string
- func OpenMessage(user string, types ...string)
- func Recv(user string, clientID string) <-chan *Message
- func Send(user string, message *Message) error
- func SetClientID(clientID string) func(*HTTPNoticerConfig)
- func SetDebug(on bool)
- func SetID(id interface{}) func(*HTTPNoticerConfig)
- func SetIsExited(isExited IsExited) func(*HTTPNoticerConfig)
- func SetMode(mode string) func(*HTTPNoticerConfig)
- func SetTimeout(timeout time.Duration) func(*HTTPNoticerConfig)
- func SetType(typ string) func(*HTTPNoticerConfig)
- func SetUser(user string) func(*HTTPNoticerConfig)
- func Stdout(message *Message)
- func ToReadCloser(r io.Reader) io.ReadCloser
- func ToWriteCloser(w io.Writer) io.WriteCloser
- type Control
- type CustomWithWriter
- type HTTPNoticerConfig
- func (c *HTTPNoticerConfig) Noticer(ctx context.Context) Noticer
- func (c *HTTPNoticerConfig) SetClientID(clientID string) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetID(id interface{}) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetIsExited(isExited IsExited) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetMode(mode string) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetTimeout(t time.Duration) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetType(typ string) *HTTPNoticerConfig
- func (c *HTTPNoticerConfig) SetUser(user string) *HTTPNoticerConfig
- type IOnlineUser
- type IOnlineUsers
- type IsExited
- type Message
- func (m *Message) Release()
- func (m *Message) SetClientID(clientID string) *Message
- func (m *Message) SetContent(content interface{}) *Message
- func (m *Message) SetID(id interface{}) *Message
- func (m *Message) SetMode(mode string) *Message
- func (m *Message) SetProgress(progress *Progress) *Message
- func (m *Message) SetStatus(status int) *Message
- func (m *Message) SetTitle(title string) *Message
- func (m *Message) SetType(t string) *Message
- type MessageWithStatus
- type NProgressor
- type Notice
- type NoticeAndProgress
- func (a *NoticeAndProgress) Add(n int64) NProgressor
- func (a *NoticeAndProgress) AutoComplete(on bool) NProgressor
- func (a *NoticeAndProgress) Callback(total int64, exec func(callback func(strLen int)) error) error
- func (a *NoticeAndProgress) Complete() NProgressor
- func (a *NoticeAndProgress) Done(n int64) NProgressor
- func (a *NoticeAndProgress) Failure(message interface{}) error
- func (p *NoticeAndProgress) ProxyReader(r io.Reader) io.ReadCloser
- func (p *NoticeAndProgress) ProxyWriter(w io.Writer) io.WriteCloser
- func (a *NoticeAndProgress) Reset()
- func (a *NoticeAndProgress) Send(message interface{}, statusCode int) error
- func (a *NoticeAndProgress) Success(message interface{}) error
- type NoticeMessager
- type NoticeTyper
- type Noticer
- type Notifier
- type OnlineUser
- func (oUser *OnlineUser) ClearMessage()
- func (oUser *OnlineUser) ClearMessageType(types ...string)
- func (oUser *OnlineUser) CountType() int
- func (oUser *OnlineUser) GetUser() string
- func (oUser *OnlineUser) HasMessageType(messageTypes ...string) bool
- func (oUser *OnlineUser) OpenMessageType(types ...string)
- func (oUser *OnlineUser) Recv(clientID string) <-chan *Message
- func (oUser *OnlineUser) Send(message *Message, openDebug ...bool) error
- type OnlineUsers
- func (o *OnlineUsers) Clear()
- func (o *OnlineUsers) Count() int
- func (o *OnlineUsers) Delete(user string)
- func (o *OnlineUsers) GetOk(user string, noLock ...bool) (IOnlineUser, bool)
- func (o *OnlineUsers) OnlineStatus(users ...string) map[string]bool
- func (o *OnlineUsers) Set(user string, oUser IOnlineUser)
- func (o *OnlineUsers) UserList(limit int) []string
- type Progress
- func (p *Progress) Add(n int64) *Progress
- func (p *Progress) AutoComplete(on bool) *Progress
- func (p *Progress) CalcPercent() *Progress
- func (p *Progress) Callback(total int64, exec func(callback func(strLen int)) error) error
- func (p *Progress) CloneInfo() ProgressInfo
- func (p *Progress) Complete() bool
- func (p *Progress) CopyToInfo(to *ProgressInfo)
- func (p *Progress) Done(n int64) int64
- func (p *Progress) Finish() int64
- func (p *Progress) IsExited() bool
- func (p *Progress) Percent() float64
- func (p *Progress) Reset()
- func (p *Progress) SetComplete() *Progress
- func (p *Progress) SetControl(control IsExited) *Progress
- func (p *Progress) SetPercent(percent float64) *Progress
- func (p *Progress) Total() int64
- type ProgressInfo
- type Progressor
Constants ¶
View Source
const ( ModeElement = `element` ModeNotify = `notify` ModeModal = `modal` ModeDash = `-` )
View Source
const ( Succeed = 1 Failed = 0 Unauthenticated = -1 Forbid = -2 )
View Source
const ( StateSuccess = 1 StateFailure = 0 )
View Source
const AnyClientID = `any`
Variables ¶
View Source
var ( ErrUserNotOnline = errors.New(`通知错误:用户不在线`) ErrMsgTypeNotAccept = errors.New(`通知错误:不接受这种消息类型`) ErrClientIDNotOnline = errors.New(`通知错误:ClientID不在线`) ErrForcedExit = errors.New(`Forced exit`) )
View Source
var ( // DefaultNoticer 默认noticer // state > 0 为成功;否则为失败 DefaultNoticer Noticer = func(message interface{}, state int, progs ...*Progress) error { if len(progs) > 0 && progs[0] != nil { message = `[ ` + tplfunc.NumberFormat(progs[0].CalcPercent().Percent(), 2) + `% ] ` + fmt.Sprint(message) } if state > 0 { log.Info(message) } else { log.Error(message) } return nil } CustomOutputNoticer CustomWithWriter = func(wOut io.Writer, wErr io.Writer) Noticer { return func(message interface{}, state int, progs ...*Progress) error { if len(progs) > 0 && progs[0] != nil { message = `[ ` + tplfunc.NumberFormat(progs[0].CalcPercent().Percent(), 2) + `% ] ` + fmt.Sprint(message) } if state > 0 { fmt.Fprintln(wOut, message) } else { fmt.Fprintln(wErr, message) } return nil } } )
View Source
var NoticeMessageChanSize = 3
Functions ¶
func CloseClient ¶
func CloseMessage ¶
func DownloadProxyFn ¶
func GetClientID ¶
func GetNoticeID ¶
func GetNoticeMode ¶
func Initialize ¶
func Initialize()
func NewUserNotices ¶
func NewUserNotices(debug bool, users IOnlineUsers) *userNotices
func OnlineStatus ¶
func OnlineUserCount ¶ added in v0.5.12
func OnlineUserCount() int
func OnlineUserList ¶ added in v0.5.12
func OpenMessage ¶
func SetClientID ¶
func SetClientID(clientID string) func(*HTTPNoticerConfig)
func SetID ¶
func SetID(id interface{}) func(*HTTPNoticerConfig)
func SetIsExited ¶
func SetIsExited(isExited IsExited) func(*HTTPNoticerConfig)
func SetMode ¶
func SetMode(mode string) func(*HTTPNoticerConfig)
func SetTimeout ¶
func SetTimeout(timeout time.Duration) func(*HTTPNoticerConfig)
func SetType ¶
func SetType(typ string) func(*HTTPNoticerConfig)
func SetUser ¶
func SetUser(user string) func(*HTTPNoticerConfig)
func ToReadCloser ¶
func ToReadCloser(r io.Reader) io.ReadCloser
func ToWriteCloser ¶
func ToWriteCloser(w io.Writer) io.WriteCloser
Types ¶
type HTTPNoticerConfig ¶
type HTTPNoticerConfig struct { User string Type string // Topic ClientID string ID interface{} IsExited IsExited Timeout time.Duration Mode string // element / notify }
func NewHTTPNoticerConfig ¶
func NewHTTPNoticerConfig() *HTTPNoticerConfig
func (*HTTPNoticerConfig) Noticer ¶
func (c *HTTPNoticerConfig) Noticer(ctx context.Context) Noticer
func (*HTTPNoticerConfig) SetClientID ¶
func (c *HTTPNoticerConfig) SetClientID(clientID string) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetID ¶
func (c *HTTPNoticerConfig) SetID(id interface{}) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetIsExited ¶
func (c *HTTPNoticerConfig) SetIsExited(isExited IsExited) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetMode ¶
func (c *HTTPNoticerConfig) SetMode(mode string) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetTimeout ¶
func (c *HTTPNoticerConfig) SetTimeout(t time.Duration) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetType ¶
func (c *HTTPNoticerConfig) SetType(typ string) *HTTPNoticerConfig
func (*HTTPNoticerConfig) SetUser ¶
func (c *HTTPNoticerConfig) SetUser(user string) *HTTPNoticerConfig
type IOnlineUser ¶
type IOnlineUser interface { GetUser() string HasMessageType(messageTypes ...string) bool Send(message *Message, openDebug ...bool) error Recv(clientID string) <-chan *Message ClearMessage() ClearMessageType(types ...string) OpenMessageType(types ...string) CountType() int CountClient() int CloseClient(clientID string) OpenClient(clientID string) }
func OpenClient ¶
func OpenClient(user string) (oUser IOnlineUser, clientID string)
type IOnlineUsers ¶
type Message ¶
type Message struct { ClientID string `json:"client_id" xml:"client_id"` ID interface{} `json:"id" xml:"id"` Type string `json:"type" xml:"type"` Title string `json:"title" xml:"title"` Status int `json:"status" xml:"status"` Content interface{} `json:"content" xml:"content"` Mode string `json:"mode" xml:"mode"` //显示模式:notify/element/modal Progress *ProgressInfo `json:"progress" xml:"progress"` }
func NewMessage ¶
func NewMessage() *Message
func NewMessageWithValue ¶
func (*Message) SetClientID ¶
func (*Message) SetContent ¶
func (*Message) SetProgress ¶
type MessageWithStatus ¶
type MessageWithStatus struct { Message interface{} Status int }
type NProgressor ¶
type NProgressor interface { Notifier Progressor }
type Notice ¶
type Notice struct {
// contains filtered or unexported fields
}
func (*Notice) CloseClient ¶
func (*Notice) CountClient ¶
func (*Notice) OpenClient ¶
type NoticeAndProgress ¶
type NoticeAndProgress struct {
// contains filtered or unexported fields
}
func NewP ¶
func NewP(eCtx echo.Context, noticeType string, user string, ctx context.Context, opts ...func(*HTTPNoticerConfig)) *NoticeAndProgress
func NewWithProgress ¶
func NewWithProgress(noticer Noticer, progresses ...*Progress) *NoticeAndProgress
func (*NoticeAndProgress) Add ¶
func (a *NoticeAndProgress) Add(n int64) NProgressor
func (*NoticeAndProgress) AutoComplete ¶
func (a *NoticeAndProgress) AutoComplete(on bool) NProgressor
func (*NoticeAndProgress) Callback ¶
func (a *NoticeAndProgress) Callback(total int64, exec func(callback func(strLen int)) error) error
func (*NoticeAndProgress) Complete ¶
func (a *NoticeAndProgress) Complete() NProgressor
func (*NoticeAndProgress) Done ¶
func (a *NoticeAndProgress) Done(n int64) NProgressor
func (*NoticeAndProgress) Failure ¶
func (a *NoticeAndProgress) Failure(message interface{}) error
func (*NoticeAndProgress) ProxyReader ¶
func (p *NoticeAndProgress) ProxyReader(r io.Reader) io.ReadCloser
func (*NoticeAndProgress) ProxyWriter ¶
func (p *NoticeAndProgress) ProxyWriter(w io.Writer) io.WriteCloser
func (*NoticeAndProgress) Reset ¶
func (a *NoticeAndProgress) Reset()
func (*NoticeAndProgress) Send ¶
func (a *NoticeAndProgress) Send(message interface{}, statusCode int) error
func (*NoticeAndProgress) Success ¶
func (a *NoticeAndProgress) Success(message interface{}) error
type NoticeMessager ¶
type NoticeTyper ¶
type Noticer ¶
func MakeNoticer ¶
func NewNoticer ¶
func NewNoticer(ctx context.Context, config *HTTPNoticerConfig) Noticer
func (Noticer) WithProgress ¶
func (noticer Noticer) WithProgress(progresses ...*Progress) *NoticeAndProgress
type OnlineUser ¶
func NewOnlineUser ¶
func NewOnlineUser(user string) *OnlineUser
func (*OnlineUser) ClearMessage ¶
func (oUser *OnlineUser) ClearMessage()
func (*OnlineUser) ClearMessageType ¶
func (oUser *OnlineUser) ClearMessageType(types ...string)
func (*OnlineUser) CountType ¶
func (oUser *OnlineUser) CountType() int
func (*OnlineUser) GetUser ¶
func (oUser *OnlineUser) GetUser() string
func (*OnlineUser) HasMessageType ¶
func (oUser *OnlineUser) HasMessageType(messageTypes ...string) bool
func (*OnlineUser) OpenMessageType ¶
func (oUser *OnlineUser) OpenMessageType(types ...string)
func (*OnlineUser) Recv ¶
func (oUser *OnlineUser) Recv(clientID string) <-chan *Message
type OnlineUsers ¶
type OnlineUsers struct {
// contains filtered or unexported fields
}
func NewOnlineUsers ¶
func NewOnlineUsers() *OnlineUsers
func (*OnlineUsers) Clear ¶
func (o *OnlineUsers) Clear()
func (*OnlineUsers) Delete ¶
func (o *OnlineUsers) Delete(user string)
func (*OnlineUsers) GetOk ¶
func (o *OnlineUsers) GetOk(user string, noLock ...bool) (IOnlineUser, bool)
func (*OnlineUsers) OnlineStatus ¶
func (o *OnlineUsers) OnlineStatus(users ...string) map[string]bool
func (*OnlineUsers) Set ¶
func (o *OnlineUsers) Set(user string, oUser IOnlineUser)
func (*OnlineUsers) UserList ¶ added in v0.5.12
func (o *OnlineUsers) UserList(limit int) []string
UserList 在线用户列表 limit=-1时为获取全部用户
type Progress ¶
type Progress struct {
// contains filtered or unexported fields
}
func NewProgress ¶
func NewProgress() *Progress
func (*Progress) AutoComplete ¶
func (*Progress) CalcPercent ¶
func (*Progress) CloneInfo ¶
func (p *Progress) CloneInfo() ProgressInfo
func (*Progress) CopyToInfo ¶
func (p *Progress) CopyToInfo(to *ProgressInfo)
func (*Progress) SetComplete ¶
func (*Progress) SetControl ¶
func (*Progress) SetPercent ¶
type ProgressInfo ¶
type Progressor ¶
type Progressor interface { Add(n int64) NProgressor Done(n int64) NProgressor AutoComplete(on bool) NProgressor Complete() NProgressor Reset() ProxyReader(r io.Reader) io.ReadCloser ProxyWriter(w io.Writer) io.WriteCloser Callback(total int64, exec func(callback func(strLen int)) error) error }
Click to show internal directories.
Click to hide internal directories.