github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/oscon-dl/groupcache.go (about) 1 // +build ignore,OMIT 2 3 package main 4 5 import ( 6 "bytes" 7 "net/http" 8 "time" 9 10 "github.com/golang/groupcache" 11 ) 12 13 func main() { 14 // STARTINIT OMIT 15 me := "http://10.0.0.1" 16 peers := groupcache.NewHTTPPool(me) 17 18 // Whenever peers change: 19 peers.Set("http://10.0.0.1", "http://10.0.0.2", "http://10.0.0.3") 20 // ENDINIT OMIT 21 22 // STARTGROUP OMIT 23 var thumbNails = groupcache.NewGroup("thumbnail", 64<<20, groupcache.GetterFunc( 24 func(ctx groupcache.Context, key string, dest groupcache.Sink) error { 25 fileName := key 26 dest.SetBytes(generateThumbnail(fileName)) 27 return nil 28 })) 29 // ENDGROUP OMIT 30 31 var ctx groupcache.Context 32 var w http.ResponseWriter 33 var r *http.Request 34 35 // STARTUSE OMIT 36 var data []byte 37 err := thumbNails.Get(ctx, "big-file.jpg", 38 groupcache.AllocatingByteSliceSink(&data)) 39 // ... 40 _ = err // OMIT 41 var modTime time.Time // OMIT 42 http.ServeContent(w, r, "big-file-thumb.jpg", modTime, bytes.NewReader(data)) 43 // ENDUSE OMIT 44 } 45 46 func generateThumbnail(filename string) []byte { 47 // ... 48 return nil 49 }