From 4af82c672c686b8c349d040ab0a4f0f092a70de5 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 25 Sep 2014 13:37:59 +0800 Subject: [PATCH] pretty comments --- conf/wide.go | 7 +++++-- editor/editors.go | 1 + event/events.go | 2 ++ main.go | 5 +++-- notification/notifications.go | 1 + output/processes.go | 1 + session/sessions.go | 6 ++++-- shell/shells.go | 2 ++ util/net.go | 1 + 9 files changed, 20 insertions(+), 6 deletions(-) diff --git a/conf/wide.go b/conf/wide.go index 99626f2..8e7eb24 100644 --- a/conf/wide.go +++ b/conf/wide.go @@ -51,10 +51,12 @@ type conf struct { var Wide conf // 维护非变化部分的配置. +// // 只有 Users 是会运行时变化的,保存回写文件时要使用这个变量. var rawWide conf // 定时检查 Wide 运行环境. +// // 如果是特别严重的问题(比如 $GOPATH 不存在)则退出进程,另一些不太严重的问题(比如 gocode 不存在)则放入全局通知队列. func FixedTimeCheckEnv() { go func() { @@ -93,6 +95,7 @@ func FixedTimeCheckEnv() { } // 定时(10 分钟)保存配置. +// // 主要目的是保存用户会话内容,以备下一次用户打开 Wide 时进行会话还原. func FixedTimeSave() { go func() { @@ -105,8 +108,7 @@ func FixedTimeSave() { }() } -// 获取 username 指定的用户的工作空间路径. -// 查找不到时返回空字符串. +// 获取 username 指定的用户的工作空间路径,查找不到时返回空字符串. func (*conf) GetUserWorkspace(username string) string { for _, user := range Wide.Users { if user.Name == username { @@ -229,6 +231,7 @@ func Load() { } // 检查文件或目录是否存在. +// // 如果由 filename 指定的文件或目录存在则返回 true,否则返回 false. func isExist(filename string) bool { _, err := os.Stat(filename) diff --git a/editor/editors.go b/editor/editors.go index c01005f..9c67aec 100644 --- a/editor/editors.go +++ b/editor/editors.go @@ -333,6 +333,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) { } // 计算光标偏移位置. +// // line 指定了行号(第一行为 0),ch 指定了列号(第一列为 0). func getCursorOffset(code string, line, ch int) (offset int) { lines := strings.Split(code, "\n") diff --git a/event/events.go b/event/events.go index e4cc1b7..3edf0ac 100644 --- a/event/events.go +++ b/event/events.go @@ -20,6 +20,7 @@ type Event struct { } // 全局事件队列. +// // 入队的事件将分发到每个用户的事件队列中. var EventQueue = make(chan int, MaxQueueLength) @@ -33,6 +34,7 @@ type UserEventQueue struct { type Queues map[string]*UserEventQueue // 用户事件队列集. +// // var UserEventQueues = Queues{} diff --git a/main.go b/main.go index 9613a22..3c1649f 100644 --- a/main.go +++ b/main.go @@ -218,8 +218,9 @@ func main() { } } -// HTTP Handler 包装. -// 完成共性处理: +// HTTP Handler 包装,完成共性处理. +// +// 共性处理: // // 1. panic recover // 2. 请求计时 diff --git a/notification/notifications.go b/notification/notifications.go index 34c1c27..1be29c2 100644 --- a/notification/notifications.go +++ b/notification/notifications.go @@ -32,6 +32,7 @@ type Notification struct { } // 用户事件处理:将事件转为通知,并通过通知通道推送给前端. +// // 当用户事件队列接收到事件时将会调用该函数进行处理. func event2Notification(e *event.Event) { if nil == session.NotificationWS[e.Sid] { diff --git a/output/processes.go b/output/processes.go index 38f5c7b..1ac5b1a 100644 --- a/output/processes.go +++ b/output/processes.go @@ -9,6 +9,7 @@ import ( ) // 所有用户正在运行的程序进程集. +// // type procs map[string][]*os.Process diff --git a/session/sessions.go b/session/sessions.go index 4f410ac..4af0920 100644 --- a/session/sessions.go +++ b/session/sessions.go @@ -1,4 +1,5 @@ // 会话操作. +// // Wide 服务器端需要维护两种会话: // // 1. HTTP 会话:主要用于验证登录 @@ -65,6 +66,7 @@ var WideSessions Sessions var mutex sync.Mutex // 在一些特殊情况(例如浏览器不间断刷新/在源代码视图刷新)下 Wide 会话集内会出现无效会话,该函数定时(1 小时)检查并移除这些无效会话. +// // 无效会话:在检查时间内 30 分钟都没有使用过的会话,WideSession.Updated 字段. func FixedTimeRelease() { go func() { @@ -85,8 +87,7 @@ func FixedTimeRelease() { }() } -// 建立会话通道. -// 通道断开时销毁会话状态,回收相关资源. +// 建立会话通道. 通道断开时销毁会话状态,回收相关资源. func WSHandler(w http.ResponseWriter, r *http.Request) { sid := r.URL.Query()["sid"][0] wSession := WideSessions.Get(sid) @@ -222,6 +223,7 @@ func (sessions *Sessions) Get(sid string) *WideSession { } // 移除 Wide 会话,释放相关资源. +// // 会话相关资源: // // 1. 用户事件队列 diff --git a/shell/shells.go b/shell/shells.go index 67eb00a..5fda99e 100644 --- a/shell/shells.go +++ b/shell/shells.go @@ -19,6 +19,7 @@ import ( ) // Shell 通道. +// // > var ShellWS = map[string]*util.WSChannel{} @@ -145,6 +146,7 @@ func pipeCommands(username string, commands ...*exec.Cmd) string { out, err := last.CombinedOutput() + // 结束进程,释放资源 for _, command := range commands[:len(commands)-1] { command.Wait() } diff --git a/util/net.go b/util/net.go index 713aa16..0af6072 100644 --- a/util/net.go +++ b/util/net.go @@ -11,6 +11,7 @@ type mynet struct{} // 网络工具. var Net = mynet{} +// 获取第一块网卡的 IP 地址. func (*mynet) LocalIP() (string, error) { tt, err := net.Interfaces()