Advertisement
Guest User

Untitled

a guest
Jul 12th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.61 KB | None | 0 0
  1. package assets
  2.  
  3. import (
  4.     "context"
  5.     "sync"
  6.     "tr-backend/shared/logger"
  7.     "tr-backend/shared/proto/feed"
  8.     "google.golang.org/grpc"
  9. )
  10.  
  11. type cache struct {
  12.     assets map[string]*Asset
  13. }
  14.  
  15. func (c *cache) Get(asset string) *Asset {
  16.     return c.assets[asset]
  17. }
  18.  
  19. var Cache cache
  20.  
  21. func fetchAsset(client pbFeed.PairFeedClient, asset string) {
  22.     stream, err := client.GetPairFeed(context.Background(), &pbFeed.Pair{Id: asset})
  23.     if err != nil {
  24.         logger.L.Fatalf("Cant connect stream %+v err: %+v", asset, err)
  25.     }
  26.     logger.L.Debugf("STREAM: %+v", asset)
  27.     go func() {
  28.         for {
  29.             f, err := stream.Recv()
  30.             if err != nil {
  31.                 logger.L.Errorf("Stream err: %+v", err)
  32.                 return
  33.             }
  34.             logger.L.Debugf("DEBUG: %+v , %+v", f, asset)
  35.         }
  36.     }()
  37. }
  38.  
  39. func StartCache() {
  40.     Cache = cache{
  41.         assets: map[string]*Asset{},
  42.     }
  43.  
  44.     var all = []string{
  45.         "DEMO",
  46.         "EURUSD",
  47.         "USDJPY",
  48.         "GBPUSD",
  49.         "AUDUSD",
  50.         "USDCHF",
  51.         "NZDUSD",
  52.         "NZDUSD",
  53.     }
  54.     for _, asset := range all {
  55.         Cache.assets[asset] = &Asset{
  56.             RWMutex:      sync.RWMutex{},
  57.             frames:       map[int]*Frame{},
  58.             currentFrame: []*Value{},
  59.         }
  60.     }
  61.  
  62.     conn, err := grpc.Dial("app1.tradingrooms.com:8182", grpc.WithInsecure())
  63.  
  64.     if err != nil {
  65.         logger.L.Fatalf("Cant connect to pair feed: %+v", err)
  66.     }
  67.     client := pbFeed.NewPairFeedClient(conn)
  68.  
  69.     fetchAsset(client, "DEMO")
  70. }
  71.  
  72. type Asset struct {
  73.     sync.RWMutex
  74.     currentFrame []*Value
  75.     frames map[int]*Frame
  76. }
  77.  
  78. func(a *Asset) LastValue() {
  79.  
  80. }
  81.  
  82. func(a *Asset) AppendValue() {
  83.  
  84. }
  85.  
  86. type Frame struct {
  87.     data []Value
  88. }
  89.  
  90. type Value struct {
  91.     Timestamp int64
  92.     JSON      []byte
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement