about summary refs log tree commit diff stats
path: root/apps/sigils.subx
Commit message (Expand)AuthorAgeFilesLines
* 6895Kartik Agaram2020-09-281-0/+2
* 6595Kartik Agaram2020-06-291-26/+26
* 6507 - use syscall names everywhereKartik Agaram2020-06-101-18/+9
* all syntax sugar now workingKartik Agaram2020-05-181-12/+36
* 6089Kartik Agaram2020-03-061-8/+8
* 5924Kartik Agaram2020-01-271-24/+24
* 5897 - rename comparison instructionsKartik Agaram2020-01-161-48/+48
* 5883 - drop the `ref` keywordKartik Agaram2020-01-121-12/+12
* 5876 - address -> addrKartik Agaram2020-01-031-10/+10
* 5804Kartik Agaram2019-12-081-23/+24
* 5790Kartik Agaram2019-12-051-62/+62
* 5752Kartik Agaram2019-11-181-16/+0
* 5715Kartik Agaram2019-10-261-2/+2
* 5714Kartik Agaram2019-10-251-128/+62
* 5700Kartik Agaram2019-10-171-1/+1
* 5698Kartik Agaram2019-10-151-109/+109
* 5678Kartik Agaram2019-09-191-82/+82
* 5675 - move helpers from subx-common into layersKartik Agaram2019-09-191-1/+1
* 5668 - start reorg to permit syntax sugar in layersKartik Agaram2019-09-191-5/+5
* 5661Kartik Agaram2019-09-151-1/+1
* 5625Kartik Agaram2019-09-051-5/+5
* 5620Kartik Agaram2019-09-041-6/+5
* 5616Kartik Agaram2019-09-041-327/+0
* 5613Kartik Agaram2019-09-031-17/+33
* 5607Kartik Agaram2019-09-011-2/+2
* 5606Kartik Agaram2019-09-011-0/+2
* 5605 - sigils: support *disp32Kartik Agaram2019-09-011-4/+241
* 5604Kartik Agaram2019-09-011-7/+7
* 5603Kartik Agaram2019-09-011-12/+12
* 5602Kartik Agaram2019-09-011-66/+75
* 5601Kartik Agaram2019-08-311-68/+68
* 5600Kartik Agaram2019-08-311-9/+11
* 5599 - sigils: support metadata in %reg and *regKartik Agaram2019-08-311-3/+176
* 5595 - support ebp and esp in sigilsKartik Agaram2019-08-311-0/+173
* 5594 - rename 'desugar' to 'sigils'Kartik Agaram2019-08-311-0/+4439
pan class="w"> time.Since(confObj.LastCache) > confObj.CacheInterval confObj.Mu.RUnlock() return answer } // Launched by init as a coroutine to watch // for the update intervals to pass. func cacheAndPush() { for { if cacheTimer() { refreshCache() } if dbTimer() { if err := pushDB(); err != nil { log.Printf("Error pushing cache to database: %v\n", err.Error()) } } time.Sleep(1000 * time.Millisecond) } } func refreshCache() { // This clusterfuck of mutex read locks is // necessary to avoid deadlock. This mess // also avoids a panic that would occur // should twtxtCache be written to during // this loop. twtxtCache.Mu.RLock() for k := range twtxtCache.Users { twtxtCache.Mu.RUnlock() err := twtxtCache.UpdateUser(k) if err != nil { log.Printf("%v\n", err.Error()) } twtxtCache.Mu.RLock() } twtxtCache.Mu.RUnlock() remoteRegistries.Mu.RLock() for _, v := range remoteRegistries.List { err := twtxtCache.CrawlRemoteRegistry(v) if err != nil { log.Printf("Error while refreshing local copy of remote registry user data: %v\n", err.Error()) } } remoteRegistries.Mu.RUnlock() confObj.Mu.Lock() confObj.LastCache = time.Now() confObj.Mu.Unlock() } // pingAssets checks if the local static assets // need to be re-cached. If they do, they are // pulled back into memory from disk. func pingAssets() { confObj.Mu.RLock() assetsDir := confObj.AssetsDir confObj.Mu.RUnlock() cssStat, err := os.Stat(assetsDir + "/style.css") if err != nil { log.Printf("%v\n", err.Error()) } indexStat, err := os.Stat(assetsDir + "/tmpl/index.html") if err != nil { log.Printf("%v\n", err.Error()) } staticCache.mu.RLock() indexMod := staticCache.indexMod cssMod := staticCache.cssMod staticCache.mu.RUnlock() if !indexMod.Equal(indexStat.ModTime()) { tmpls = initTemplates() var b []byte buf := bytes.NewBuffer(b) confObj.Mu.RLock() err = tmpls.ExecuteTemplate(buf, "index.html", confObj.Instance) confObj.Mu.RUnlock() if err != nil { log.Printf("%v\n", err.Error()) } staticCache.mu.Lock() staticCache.index = buf.Bytes() staticCache.indexMod = indexStat.ModTime() staticCache.mu.Unlock() } if !cssMod.Equal(cssStat.ModTime()) { css, err := ioutil.ReadFile(assetsDir + "/style.css") if err != nil { log.Printf("%v\n", err.Error()) } staticCache.mu.Lock() staticCache.css = css staticCache.cssMod = cssStat.ModTime() staticCache.mu.Unlock() } }