Просмотр исходного кода

each user's channel reduced to 50 and sanity check converted to function checkOpenID

master
Patrick Peng Sun 8 лет назад
Родитель
Сommit
e616282c7d
1 измененных файлов: 12 добавлений и 11 удалений
  1. +12
    -11
      sessionManager.go

+ 12
- 11
sessionManager.go Просмотреть файл



import ( import (
"log" "log"
"time"
) )


//openIDSession for a given openID //openIDSession for a given openID
s := openIDSession{} s := openIDSession{}
s.openID = openID s.openID = openID
s.count = 0 s.count = 0
s.jobs = make(chan InWechatMsg, 200)
s.jobs = make(chan InWechatMsg, 50)
s.data, _ = getCurrentSesssion(openID) //either load or create new s.data, _ = getCurrentSesssion(openID) //either load or create new
m.sessions[openID] = s //register it to memory m.sessions[openID] = s //register it to memory
return s return s
for hasJob { for hasJob {
select { select {
case v := <-m.sessions[openID].jobs: case v := <-m.sessions[openID].jobs:
if v.header.FromUserName != openID {
log.Println("Error: Weird Message below ...")
log.Println(v)
log.Fatalf("Error: worker thread for %s, see different id=%s \n", openID, v.header.FromUserName)
}
log.Println(" Processing job..")
log.Println(v)
time.Sleep(5 * time.Second)
kfSendTxt(openID, "Job Processed "+v.body.(TextMsg).Content)
m.checkOpenID(openID, v)
s := m.sessions[openID]
s.data.incomingMsg(v) //<=== main logic for processing each incoming message
jobFinished.consumed++ jobFinished.consumed++
default: default:
hasJob = false hasJob = false
m.done <- jobFinished //notify parent that we have done m.done <- jobFinished //notify parent that we have done
return return
} }

func (m *SessionManager) checkOpenID(openID string, v InWechatMsg) {
if v.header.FromUserName != openID {
log.Println("Error: Weird Message below ...")
log.Println(v)
log.Fatalf("Error: worker thread for %s, see different id=%s \n", openID, v.header.FromUserName)
}
}

Загрузка…
Отмена
Сохранить