From 9eb72cb08d7da09079f1f01fc0aeb5ee99cb71a4 Mon Sep 17 00:00:00 2001
From: Hans Moog <hm@mkjc.net>
Date: Fri, 14 Feb 2020 13:40:36 +0100
Subject: [PATCH] Refactor: removed duplicate code

---
 go.mod                                        |  2 +
 .../binary/transactionrequester/constants.go  | 10 ---
 .../binary/transactionrequester/events.go     |  9 ---
 .../binary/transactionrequester/options.go    | 37 ----------
 .../transactionrequester.go                   | 74 -------------------
 5 files changed, 2 insertions(+), 130 deletions(-)
 delete mode 100644 packages/binary/transactionrequester/constants.go
 delete mode 100644 packages/binary/transactionrequester/events.go
 delete mode 100644 packages/binary/transactionrequester/options.go
 delete mode 100644 packages/binary/transactionrequester/transactionrequester.go

diff --git a/go.mod b/go.mod
index 12474aa2..7afa104f 100644
--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,7 @@ module github.com/iotaledger/goshimmer
 go 1.13
 
 require (
+	cloud.google.com/go v0.36.0 // indirect
 	github.com/dgraph-io/badger/v2 v2.0.1
 	github.com/dgrijalva/jwt-go v3.2.0+incompatible
 	github.com/dgryski/go-farm v0.0.0-20191112170834-c2139c5d712b // indirect
@@ -41,6 +42,7 @@ require (
 	golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9 // indirect
 	golang.org/x/text v0.3.2 // indirect
 	golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7 // indirect
+	google.golang.org/appengine v1.4.0 // indirect
 	gopkg.in/ini.v1 v1.51.1 // indirect
 	gopkg.in/yaml.v2 v2.2.7 // indirect
 )
diff --git a/packages/binary/transactionrequester/constants.go b/packages/binary/transactionrequester/constants.go
deleted file mode 100644
index b9f59769..00000000
--- a/packages/binary/transactionrequester/constants.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package transactionrequester
-
-import (
-	"time"
-)
-
-const (
-	DEFAULT_REQUEST_WORKER_COUNT = 1024
-	DEFAULT_RETRY_INTERVAL       = 10 * time.Second
-)
diff --git a/packages/binary/transactionrequester/events.go b/packages/binary/transactionrequester/events.go
deleted file mode 100644
index e845d790..00000000
--- a/packages/binary/transactionrequester/events.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package transactionrequester
-
-import (
-	"github.com/iotaledger/hive.go/events"
-)
-
-type Events struct {
-	SendRequest *events.Event
-}
diff --git a/packages/binary/transactionrequester/options.go b/packages/binary/transactionrequester/options.go
deleted file mode 100644
index 05db5db4..00000000
--- a/packages/binary/transactionrequester/options.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package transactionrequester
-
-import (
-	"time"
-)
-
-type Options struct {
-	retryInterval time.Duration
-	workerCount   int
-}
-
-func newOptions(optionalOptions []Option) *Options {
-	result := &Options{
-		retryInterval: 10 * time.Second,
-		workerCount:   DEFAULT_REQUEST_WORKER_COUNT,
-	}
-
-	for _, optionalOption := range optionalOptions {
-		optionalOption(result)
-	}
-
-	return result
-}
-
-type Option func(*Options)
-
-func RetryInterval(interval time.Duration) Option {
-	return func(args *Options) {
-		args.retryInterval = interval
-	}
-}
-
-func WorkerCount(workerCount int) Option {
-	return func(args *Options) {
-		args.workerCount = workerCount
-	}
-}
diff --git a/packages/binary/transactionrequester/transactionrequester.go b/packages/binary/transactionrequester/transactionrequester.go
deleted file mode 100644
index 6f036e81..00000000
--- a/packages/binary/transactionrequester/transactionrequester.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package transactionrequester
-
-import (
-	"sync"
-	"time"
-
-	"github.com/iotaledger/hive.go/async"
-	"github.com/iotaledger/hive.go/events"
-
-	"github.com/iotaledger/goshimmer/packages/binary/tangle/model/transaction"
-)
-
-type TransactionRequester struct {
-	scheduledRequests map[transaction.Id]*time.Timer
-	requestWorker     async.NonBlockingWorkerPool
-	options           *Options
-	Events            Events
-
-	scheduledRequestsMutex sync.RWMutex
-}
-
-func New(optionalOptions ...Option) *TransactionRequester {
-	requester := &TransactionRequester{
-		scheduledRequests: make(map[transaction.Id]*time.Timer),
-		options:           newOptions(optionalOptions),
-		Events: Events{
-			SendRequest: events.NewEvent(func(handler interface{}, params ...interface{}) {
-				handler.(func(transaction.Id))(params[0].(transaction.Id))
-			}),
-		},
-	}
-
-	requester.requestWorker.Tune(requester.options.workerCount)
-
-	return requester
-}
-
-func (requester *TransactionRequester) ScheduleRequest(transactionId transaction.Id) {
-	var retryRequest func(bool)
-	retryRequest = func(initialRequest bool) {
-		requester.requestWorker.Submit(func() {
-			requester.scheduledRequestsMutex.RLock()
-			if _, requestExists := requester.scheduledRequests[transactionId]; !initialRequest && !requestExists {
-				requester.scheduledRequestsMutex.RUnlock()
-
-				return
-			}
-			requester.scheduledRequestsMutex.RUnlock()
-
-			requester.Events.SendRequest.Trigger(transactionId)
-
-			requester.scheduledRequestsMutex.Lock()
-			requester.scheduledRequests[transactionId] = time.AfterFunc(requester.options.retryInterval, func() { retryRequest(false) })
-			requester.scheduledRequestsMutex.Unlock()
-		})
-	}
-
-	retryRequest(true)
-}
-
-func (requester *TransactionRequester) StopRequest(transactionId transaction.Id) {
-	requester.scheduledRequestsMutex.RLock()
-	if timer, timerExists := requester.scheduledRequests[transactionId]; timerExists {
-		requester.scheduledRequestsMutex.RUnlock()
-
-		timer.Stop()
-
-		requester.scheduledRequestsMutex.Lock()
-		delete(requester.scheduledRequests, transactionId)
-		requester.scheduledRequestsMutex.Unlock()
-	} else {
-		requester.scheduledRequestsMutex.RUnlock()
-	}
-}
-- 
GitLab