代码拉取完成,页面将自动刷新
同步操作将从 JUMEI_ARCH/volantmq 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package mem
import (
"sync"
"github.com/troian/surgemq/persistence/types"
)
type sessions struct {
status *dbStatus
lock sync.Mutex
sessions map[string]*persistenceTypes.SessionState
}
func (s *sessions) PutOutMessage(id []byte, data []byte) error {
select {
case <-s.status.done:
return persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
if _, ok := s.sessions[string(id)]; !ok {
s.sessions[string(id)] = &persistenceTypes.SessionState{}
}
s.sessions[string(id)].OutMessages = append(s.sessions[string(id)].OutMessages, data)
return nil
}
// Get
func (s *sessions) Get(id []byte) (*persistenceTypes.SessionState, error) {
select {
case <-s.status.done:
return nil, persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
ses, ok := s.sessions[string(id)]
if !ok {
return nil, persistenceTypes.ErrNotFound
}
return ses, nil
}
// Load
func (s *sessions) Load(load func([]byte, *persistenceTypes.SessionState)) error {
select {
case <-s.status.done:
return persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
for id, state := range s.sessions {
load([]byte(id), state)
}
return nil
}
// Store session state
func (s *sessions) Store(id []byte, state *persistenceTypes.SessionState) error {
select {
case <-s.status.done:
return persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
if st, ok := s.sessions[string(id)]; ok {
st.OutMessages = append(st.OutMessages, state.OutMessages...)
st.UnAckMessages = append(st.UnAckMessages, state.UnAckMessages...)
} else {
s.sessions[string(id)] = state
}
return nil
}
// Delete
func (s *sessions) Delete(id []byte) error {
select {
case <-s.status.done:
return persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
delete(s.sessions, string(id))
return nil
}
// Wipe
func (s *sessions) Wipe() error {
select {
case <-s.status.done:
return persistenceTypes.ErrNotOpen
default:
}
defer s.lock.Unlock()
s.lock.Lock()
s.sessions = make(map[string]*persistenceTypes.SessionState)
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。