Skip to content
Snippets Groups Projects
Commit 22ce9ccc authored by Hans Moog's avatar Hans Moog
Browse files

Feat: started to rework broadCastData webapi call

parent 11a24985
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,7 @@ import ( ...@@ -22,6 +22,7 @@ import (
"github.com/iotaledger/goshimmer/plugins/spa" "github.com/iotaledger/goshimmer/plugins/spa"
"github.com/iotaledger/goshimmer/plugins/tangle" "github.com/iotaledger/goshimmer/plugins/tangle"
"github.com/iotaledger/goshimmer/plugins/webapi" "github.com/iotaledger/goshimmer/plugins/webapi"
webapi_broadcastData "github.com/iotaledger/goshimmer/plugins/webapi/broadcastData"
webapi_gtta "github.com/iotaledger/goshimmer/plugins/webapi/gtta" webapi_gtta "github.com/iotaledger/goshimmer/plugins/webapi/gtta"
webapi_spammer "github.com/iotaledger/goshimmer/plugins/webapi/spammer" webapi_spammer "github.com/iotaledger/goshimmer/plugins/webapi/spammer"
webapi_auth "github.com/iotaledger/goshimmer/plugins/webauth" webapi_auth "github.com/iotaledger/goshimmer/plugins/webauth"
...@@ -60,11 +61,11 @@ func main() { ...@@ -60,11 +61,11 @@ func main() {
webapi_auth.PLUGIN, webapi_auth.PLUGIN,
webapi_gtta.PLUGIN, webapi_gtta.PLUGIN,
webapi_spammer.PLUGIN, webapi_spammer.PLUGIN,
webapi_broadcastData.PLUGIN,
spa.PLUGIN, spa.PLUGIN,
/* /*
webapi_broadcastData.PLUGIN,
webapi_getTransactionTrytesByHash.PLUGIN, webapi_getTransactionTrytesByHash.PLUGIN,
webapi_getTransactionObjectsByHash.PLUGIN, webapi_getTransactionObjectsByHash.PLUGIN,
webapi_findTransactionHashes.PLUGIN, webapi_findTransactionHashes.PLUGIN,
......
out.png

344 KiB | W: | H:

out.png

290 KiB | W: | H:

out.png
out.png
out.png
out.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -14,7 +14,7 @@ var ErrReceivedDuplicateBytes = fmt.Errorf("received duplicate bytes") ...@@ -14,7 +14,7 @@ var ErrReceivedDuplicateBytes = fmt.Errorf("received duplicate bytes")
type RecentlySeenBytesFilter struct { type RecentlySeenBytesFilter struct {
bytesFilter *bytesfilter.BytesFilter bytesFilter *bytesfilter.BytesFilter
onAcceptCallback func(bytes []byte, peer *peer.Peer) onAcceptCallback func(bytes []byte, peer *peer.Peer)
onRejectCallback func(bytes []byte, err error) onRejectCallback func(bytes []byte, err error, peer *peer.Peer)
workerPool async.WorkerPool workerPool async.WorkerPool
onAcceptCallbackMutex sync.RWMutex onAcceptCallbackMutex sync.RWMutex
...@@ -34,7 +34,7 @@ func (filter *RecentlySeenBytesFilter) Filter(bytes []byte, peer *peer.Peer) { ...@@ -34,7 +34,7 @@ func (filter *RecentlySeenBytesFilter) Filter(bytes []byte, peer *peer.Peer) {
if filter.bytesFilter.Add(bytes) { if filter.bytesFilter.Add(bytes) {
filter.getAcceptCallback()(bytes, peer) filter.getAcceptCallback()(bytes, peer)
} else { } else {
filter.getRejectCallback()(bytes, ErrReceivedDuplicateBytes) filter.getRejectCallback()(bytes, ErrReceivedDuplicateBytes, peer)
} }
}) })
} }
...@@ -45,7 +45,7 @@ func (filter *RecentlySeenBytesFilter) OnAccept(callback func(bytes []byte, peer ...@@ -45,7 +45,7 @@ func (filter *RecentlySeenBytesFilter) OnAccept(callback func(bytes []byte, peer
filter.onAcceptCallbackMutex.Unlock() filter.onAcceptCallbackMutex.Unlock()
} }
func (filter *RecentlySeenBytesFilter) OnReject(callback func(bytes []byte, err error)) { func (filter *RecentlySeenBytesFilter) OnReject(callback func(bytes []byte, err error, peer *peer.Peer)) {
filter.onRejectCallbackMutex.Lock() filter.onRejectCallbackMutex.Lock()
filter.onRejectCallback = callback filter.onRejectCallback = callback
filter.onRejectCallbackMutex.Unlock() filter.onRejectCallbackMutex.Unlock()
...@@ -59,7 +59,7 @@ func (filter *RecentlySeenBytesFilter) getAcceptCallback() (result func(bytes [] ...@@ -59,7 +59,7 @@ func (filter *RecentlySeenBytesFilter) getAcceptCallback() (result func(bytes []
return return
} }
func (filter *RecentlySeenBytesFilter) getRejectCallback() (result func(bytes []byte, err error)) { func (filter *RecentlySeenBytesFilter) getRejectCallback() (result func(bytes []byte, err error, peer *peer.Peer)) {
filter.onRejectCallbackMutex.Lock() filter.onRejectCallbackMutex.Lock()
result = filter.onRejectCallback result = filter.onRejectCallback
filter.onRejectCallbackMutex.Unlock() filter.onRejectCallbackMutex.Unlock()
......
...@@ -14,7 +14,7 @@ var ErrInvalidSignature = fmt.Errorf("invalid signature") ...@@ -14,7 +14,7 @@ var ErrInvalidSignature = fmt.Errorf("invalid signature")
type TransactionSignatureFilter struct { type TransactionSignatureFilter struct {
onAcceptCallback func(tx *transaction.Transaction, peer *peer.Peer) onAcceptCallback func(tx *transaction.Transaction, peer *peer.Peer)
onRejectCallback func(tx *transaction.Transaction, err error) onRejectCallback func(tx *transaction.Transaction, err error, peer *peer.Peer)
workerPool async.WorkerPool workerPool async.WorkerPool
onAcceptCallbackMutex sync.RWMutex onAcceptCallbackMutex sync.RWMutex
...@@ -32,7 +32,7 @@ func (filter *TransactionSignatureFilter) Filter(tx *transaction.Transaction, pe ...@@ -32,7 +32,7 @@ func (filter *TransactionSignatureFilter) Filter(tx *transaction.Transaction, pe
if tx.VerifySignature() { if tx.VerifySignature() {
filter.getAcceptCallback()(tx, peer) filter.getAcceptCallback()(tx, peer)
} else { } else {
filter.getRejectCallback()(tx, ErrInvalidSignature) filter.getRejectCallback()(tx, ErrInvalidSignature, peer)
} }
}) })
} }
...@@ -43,7 +43,7 @@ func (filter *TransactionSignatureFilter) OnAccept(callback func(tx *transaction ...@@ -43,7 +43,7 @@ func (filter *TransactionSignatureFilter) OnAccept(callback func(tx *transaction
filter.onAcceptCallbackMutex.Unlock() filter.onAcceptCallbackMutex.Unlock()
} }
func (filter *TransactionSignatureFilter) OnReject(callback func(tx *transaction.Transaction, err error)) { func (filter *TransactionSignatureFilter) OnReject(callback func(tx *transaction.Transaction, err error, peer *peer.Peer)) {
filter.onRejectCallbackMutex.Lock() filter.onRejectCallbackMutex.Lock()
filter.onRejectCallback = callback filter.onRejectCallback = callback
filter.onRejectCallbackMutex.Unlock() filter.onRejectCallbackMutex.Unlock()
...@@ -61,7 +61,7 @@ func (filter *TransactionSignatureFilter) getAcceptCallback() (result func(tx *t ...@@ -61,7 +61,7 @@ func (filter *TransactionSignatureFilter) getAcceptCallback() (result func(tx *t
return return
} }
func (filter *TransactionSignatureFilter) getRejectCallback() (result func(tx *transaction.Transaction, err error)) { func (filter *TransactionSignatureFilter) getRejectCallback() (result func(tx *transaction.Transaction, err error, peer *peer.Peer)) {
filter.onRejectCallbackMutex.RLock() filter.onRejectCallbackMutex.RLock()
result = filter.onRejectCallback result = filter.onRejectCallback
filter.onRejectCallbackMutex.RUnlock() filter.onRejectCallbackMutex.RUnlock()
......
...@@ -7,6 +7,6 @@ import ( ...@@ -7,6 +7,6 @@ import (
type BytesFilter interface { type BytesFilter interface {
Filter(bytes []byte, peer *peer.Peer) Filter(bytes []byte, peer *peer.Peer)
OnAccept(callback func(bytes []byte, peer *peer.Peer)) OnAccept(callback func(bytes []byte, peer *peer.Peer))
OnReject(callback func(bytes []byte, err error)) OnReject(callback func(bytes []byte, err error, peer *peer.Peer))
Shutdown() Shutdown()
} }
...@@ -9,6 +9,6 @@ import ( ...@@ -9,6 +9,6 @@ import (
type TransactionFilter interface { type TransactionFilter interface {
Filter(tx *transaction.Transaction, peer *peer.Peer) Filter(tx *transaction.Transaction, peer *peer.Peer)
OnAccept(callback func(tx *transaction.Transaction, peer *peer.Peer)) OnAccept(callback func(tx *transaction.Transaction, peer *peer.Peer))
OnReject(callback func(tx *transaction.Transaction, err error)) OnReject(callback func(tx *transaction.Transaction, err error, peer *peer.Peer))
Shutdown() Shutdown()
} }
...@@ -30,13 +30,13 @@ func New() (result *TransactionParser) { ...@@ -30,13 +30,13 @@ func New() (result *TransactionParser) {
Events: transactionParserEvents{ Events: transactionParserEvents{
BytesRejected: events.NewEvent(func(handler interface{}, params ...interface{}) { BytesRejected: events.NewEvent(func(handler interface{}, params ...interface{}) {
handler.(func([]byte, error))(params[0].([]byte), params[1].(error)) handler.(func([]byte, error, *peer.Peer))(params[0].([]byte), params[1].(error), params[2].(*peer.Peer))
}), }),
TransactionParsed: events.NewEvent(func(handler interface{}, params ...interface{}) { TransactionParsed: events.NewEvent(func(handler interface{}, params ...interface{}) {
handler.(func(*transaction.Transaction, *peer.Peer))(params[0].(*transaction.Transaction), params[1].(*peer.Peer)) handler.(func(*transaction.Transaction, *peer.Peer))(params[0].(*transaction.Transaction), params[1].(*peer.Peer))
}), }),
TransactionRejected: events.NewEvent(func(handler interface{}, params ...interface{}) { TransactionRejected: events.NewEvent(func(handler interface{}, params ...interface{}) {
handler.(func(*transaction.Transaction, error))(params[0].(*transaction.Transaction), params[1].(error)) handler.(func(*transaction.Transaction, error, *peer.Peer))(params[0].(*transaction.Transaction), params[1].(error), params[2].(*peer.Peer))
}), }),
}, },
} }
...@@ -101,8 +101,8 @@ func (transactionParser *TransactionParser) setupBytesFilterDataFlow() { ...@@ -101,8 +101,8 @@ func (transactionParser *TransactionParser) setupBytesFilterDataFlow() {
} else { } else {
transactionParser.bytesFilters[i].OnAccept(transactionParser.bytesFilters[i+1].Filter) transactionParser.bytesFilters[i].OnAccept(transactionParser.bytesFilters[i+1].Filter)
} }
transactionParser.bytesFilters[i].OnReject(func(bytes []byte, err error) { transactionParser.bytesFilters[i].OnReject(func(bytes []byte, err error, peer *peer.Peer) {
transactionParser.Events.BytesRejected.Trigger(bytes, err) transactionParser.Events.BytesRejected.Trigger(bytes, err, peer)
}) })
} }
} }
...@@ -127,8 +127,8 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() { ...@@ -127,8 +127,8 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() {
} else { } else {
transactionParser.transactionFilters[i].OnAccept(transactionParser.transactionFilters[i+1].Filter) transactionParser.transactionFilters[i].OnAccept(transactionParser.transactionFilters[i+1].Filter)
} }
transactionParser.transactionFilters[i].OnReject(func(tx *transaction.Transaction, err error) { transactionParser.transactionFilters[i].OnReject(func(tx *transaction.Transaction, err error, peer *peer.Peer) {
transactionParser.Events.TransactionRejected.Trigger(tx, err) transactionParser.Events.TransactionRejected.Trigger(tx, err, peer)
}) })
} }
} }
...@@ -137,7 +137,7 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() { ...@@ -137,7 +137,7 @@ func (transactionParser *TransactionParser) setupTransactionsFilterDataFlow() {
func (transactionParser *TransactionParser) parseTransaction(bytes []byte, peer *peer.Peer) { func (transactionParser *TransactionParser) parseTransaction(bytes []byte, peer *peer.Peer) {
if parsedTransaction, err := transaction.FromBytes(bytes); err != nil { if parsedTransaction, err := transaction.FromBytes(bytes); err != nil {
transactionParser.Events.BytesRejected.Trigger(bytes, err) transactionParser.Events.BytesRejected.Trigger(bytes, err, peer)
} else { } else {
transactionParser.transactionFilters[0].Filter(parsedTransaction, peer) transactionParser.transactionFilters[0].Filter(parsedTransaction, peer)
} }
......
...@@ -42,6 +42,7 @@ func configure(*node.Plugin) { ...@@ -42,6 +42,7 @@ func configure(*node.Plugin) {
// setup TransactionParser // setup TransactionParser
TransactionParser.Events.TransactionParsed.Attach(events.NewClosure(func(transaction *transaction.Transaction, peer *peer.Peer) { TransactionParser.Events.TransactionParsed.Attach(events.NewClosure(func(transaction *transaction.Transaction, peer *peer.Peer) {
peer.PublicKey()
// TODO: ADD PEER // TODO: ADD PEER
Instance.AttachTransaction(transaction) Instance.AttachTransaction(transaction)
......
...@@ -29,7 +29,6 @@ func configure(plugin *node.Plugin) { ...@@ -29,7 +29,6 @@ func configure(plugin *node.Plugin) {
// broadcastData creates a data (0-value) transaction given an input of bytes and // broadcastData creates a data (0-value) transaction given an input of bytes and
// broadcasts it to the node's neighbors. It returns the transaction hash if successful. // broadcasts it to the node's neighbors. It returns the transaction hash if successful.
func broadcastData(c echo.Context) error { func broadcastData(c echo.Context) error {
var request Request var request Request
if err := c.Bind(&request); err != nil { if err := c.Bind(&request); err != nil {
log.Info(err.Error()) log.Info(err.Error())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment