diff --git a/fs/handlers.go b/fs/handlers.go index 3360789..793f0a6 100644 --- a/fs/handlers.go +++ b/fs/handlers.go @@ -426,7 +426,7 @@ func agentBindings(ctx HandlerCtx) ([]Binding, error) { }, Rename: func(newName string) error { a.SetName(newName) - persistSession(globalRootState, sess.Name()) + session.PersistSession(sess.Name()) return nil }, }) @@ -727,7 +727,7 @@ func writeAgentName(ctx HandlerCtx, data []byte) error { return nil } ctx.Agent.SetName(newName) - persistSession(globalRootState, ctx.Session.Name()) + session.PersistSession(ctx.Session.Name()) return nil } diff --git a/fs/newroot.go b/fs/newroot.go index f6ee05a..6c7396d 100644 --- a/fs/newroot.go +++ b/fs/newroot.go @@ -77,7 +77,14 @@ func NewRoot(cfg Config) *Tree { globalRootState = rs // Restore persisted sessions from disk. - restoreAllSessions(rs) + for _, r := range session.RestoreAllSessions() { + node := rs.GetOrCreateNode(r.Session) + for _, ra := range r.Agents { + al := NewAgentLog(ra.Remote) + node.SetAgentLog(ra.ID, al) + replayMessagesToLog(al, ra.Messages) + } + } return tree } diff --git a/fs/persist.go b/fs/persist.go deleted file mode 100644 index 94eae08..0000000 --- a/fs/persist.go +++ /dev/null @@ -1,35 +0,0 @@ -package fs - -import ( - "ollie/session" -) - -// persistSession saves a session to disk. -func persistSession(rs *RootState, name string) { - if err := session.PersistSession(name); err != nil { - rs.Cfg.Log.Error("persist session %s: %v", name, err) - } -} - -// saveAllSessions persists all active sessions. -func saveAllSessions(rs *RootState) { - session.SaveAllSessions() -} - -// restoreAllSessions restores persisted sessions and wraps them with SessionNodes. -func restoreAllSessions(rs *RootState) { - restored := session.RestoreAllSessions() - for _, r := range restored { - // Wrap in SessionNode - node := rs.GetOrCreateNode(r.Session) - - // Create AgentLog for each agent - for _, ra := range r.Agents { - al := NewAgentLog(ra.Remote) - node.SetAgentLog(ra.ID, al) - - // Replay messages to the AgentLog - replayMessagesToLog(al, ra.Messages) - } - } -}