state.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package client
  2. import (
  3. metrics "github.com/rcrowley/go-metrics"
  4. "ngrok/client/ui"
  5. )
  6. // client state
  7. type State struct {
  8. id string
  9. ui *ui.Ui
  10. publicUrl string
  11. history *RequestHistory
  12. opts *Options
  13. metrics *ClientMetrics
  14. // just for UI purposes
  15. status string
  16. historyEntries []*RequestHistoryEntry
  17. stopping bool
  18. }
  19. // implement client.ui.State
  20. func (s State) GetVersion() string { return "" }
  21. func (s State) GetPublicUrl() string { return s.publicUrl }
  22. func (s State) GetLocalAddr() string { return s.opts.localaddr }
  23. func (s State) GetStatus() string { return s.status }
  24. func (s State) GetHistory() []ui.HttpRequest {
  25. // go sucks
  26. historyEntries := make([]ui.HttpRequest, len(s.historyEntries))
  27. for i, entry := range s.historyEntries {
  28. historyEntries[i] = entry
  29. }
  30. return historyEntries
  31. }
  32. func (s State) IsStopping() bool { return s.stopping }
  33. func (s State) GetConnectionMetrics() (metrics.Meter, metrics.Timer) {
  34. return s.metrics.connMeter, s.metrics.connTimer
  35. }
  36. func (s State) GetRequestMetrics() (metrics.Meter, metrics.Timer) {
  37. return s.metrics.reqMeter, s.metrics.reqTimer
  38. }
  39. func (s State) GetBytesInMetrics() (metrics.Counter, metrics.Histogram) {
  40. return s.metrics.bytesInCount, s.metrics.bytesIn
  41. }
  42. func (s State) GetBytesOutMetrics() (metrics.Counter, metrics.Histogram) {
  43. return s.metrics.bytesOutCount, s.metrics.bytesOut
  44. }
  45. func (s *State) Update() {
  46. s.ui.Updates.In() <- *s
  47. }