mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 02:00:11 -08:00
Merge remote-tracking branch 'origin/master' into compat.4
This commit is contained in:
commit
5331afbdd4
17 changed files with 527 additions and 236 deletions
|
|
@ -4,6 +4,7 @@
|
|||
package irc
|
||||
|
||||
import (
|
||||
"net"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
|
@ -64,6 +65,37 @@ func (client *Client) Sessions() (sessions []*Session) {
|
|||
return
|
||||
}
|
||||
|
||||
type SessionData struct {
|
||||
ctime time.Time
|
||||
atime time.Time
|
||||
ip net.IP
|
||||
hostname string
|
||||
}
|
||||
|
||||
func (client *Client) AllSessionData(currentSession *Session) (data []SessionData, currentIndex int) {
|
||||
currentIndex = -1
|
||||
client.stateMutex.RLock()
|
||||
defer client.stateMutex.RUnlock()
|
||||
|
||||
data = make([]SessionData, len(client.sessions))
|
||||
for i, session := range client.sessions {
|
||||
if session == currentSession {
|
||||
currentIndex = i
|
||||
}
|
||||
data[i] = SessionData{
|
||||
atime: session.atime,
|
||||
ctime: session.ctime,
|
||||
hostname: session.rawHostname,
|
||||
}
|
||||
if session.proxiedIP != nil {
|
||||
data[i].ip = session.proxiedIP
|
||||
} else {
|
||||
data[i].ip = session.realIP
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (client *Client) AddSession(session *Session) (success bool) {
|
||||
client.stateMutex.Lock()
|
||||
defer client.stateMutex.Unlock()
|
||||
|
|
@ -291,7 +323,10 @@ func (client *Client) WhoWas() (result WhoWas) {
|
|||
func (client *Client) Details() (result ClientDetails) {
|
||||
client.stateMutex.RLock()
|
||||
defer client.stateMutex.RUnlock()
|
||||
return client.detailsNoMutex()
|
||||
}
|
||||
|
||||
func (client *Client) detailsNoMutex() (result ClientDetails) {
|
||||
result.nick = client.nick
|
||||
result.nickCasefolded = client.nickCasefolded
|
||||
result.username = client.username
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue