From 2b011c28c5f5a21dce42f621e089d7e8231757ff Mon Sep 17 00:00:00 2001
From: Benjamin Wenger <ben@elixxir.ioo>
Date: Wed, 26 Aug 2020 13:36:38 -0700
Subject: [PATCH] moved e2e and finalized the context object

---
 context/context.go                | 15 +++++++++++++++
 context/message.go                |  9 +++++++++
 context/networkManager.go         | 17 +++++++++++++++++
 {key => e2e}/context.go           |  2 +-
 {key => e2e}/fingerprintAccess.go |  2 +-
 {key => e2e}/key.go               |  2 +-
 {key => e2e}/key_test.go          |  2 +-
 {key => e2e}/manager.go           |  2 +-
 {key => e2e}/params.go            |  2 +-
 {key => e2e}/params_test.go       |  2 +-
 {key => e2e}/session.go           |  2 +-
 {key => e2e}/sessionBuff.go       |  2 +-
 {key => e2e}/sessionID.go         |  2 +-
 {key => e2e}/sessionType.go       |  2 +-
 {key => e2e}/sessionType_test.go  |  2 +-
 {key => e2e}/session_test.go      |  2 +-
 {key => e2e}/stateVector.go       |  6 ++++--
 {key => e2e}/stateVector_test.go  |  2 +-
 {key => e2e}/status.go            |  2 +-
 {key => e2e}/status_test.go       |  2 +-
 {key => e2e}/store.go             |  2 +-
 21 files changed, 62 insertions(+), 19 deletions(-)
 create mode 100644 context/context.go
 create mode 100644 context/message.go
 create mode 100644 context/networkManager.go
 rename {key => e2e}/context.go (93%)
 rename {key => e2e}/fingerprintAccess.go (94%)
 rename {key => e2e}/key.go (99%)
 rename {key => e2e}/key_test.go (99%)
 rename {key => e2e}/manager.go (99%)
 rename {key => e2e}/params.go (98%)
 rename {key => e2e}/params_test.go (98%)
 rename {key => e2e}/session.go (99%)
 rename {key => e2e}/sessionBuff.go (99%)
 rename {key => e2e}/sessionID.go (95%)
 rename {key => e2e}/sessionType.go (94%)
 rename {key => e2e}/sessionType_test.go (97%)
 rename {key => e2e}/session_test.go (99%)
 rename {key => e2e}/stateVector.go (97%)
 rename {key => e2e}/stateVector_test.go (99%)
 rename {key => e2e}/status.go (96%)
 rename {key => e2e}/status_test.go (98%)
 rename {key => e2e}/store.go (99%)

diff --git a/context/context.go b/context/context.go
new file mode 100644
index 000000000..0d50cdcd2
--- /dev/null
+++ b/context/context.go
@@ -0,0 +1,15 @@
+package context
+
+import (
+	"gitlab.com/elixxir/client/storage"
+	"gitlab.com/elixxir/primitives/switchboard"
+)
+
+type Context struct {
+	Session     *storage.Session
+	Switchboard *switchboard.Switchboard
+	// note that the manager has a pointer to the context in many cases, but
+	// this interface allows it to be mocked for easy testing without the
+	// loop
+	Manager NetworkManager
+}
diff --git a/context/message.go b/context/message.go
new file mode 100644
index 000000000..c0c9315a1
--- /dev/null
+++ b/context/message.go
@@ -0,0 +1,9 @@
+package context
+
+import "gitlab.com/xx_network/primitives/id"
+
+type Message struct {
+	Recipient   *id.ID
+	Payload     []byte
+	MessageType int32
+}
diff --git a/context/networkManager.go b/context/networkManager.go
new file mode 100644
index 000000000..910cd1124
--- /dev/null
+++ b/context/networkManager.go
@@ -0,0 +1,17 @@
+package context
+
+import (
+	"gitlab.com/elixxir/comms/network"
+	"gitlab.com/elixxir/primitives/format"
+	"gitlab.com/xx_network/primitives/id"
+)
+
+type NetworkManager interface {
+	SendE2E(m Message) ([]id.Round, error)
+	SendUnsafe(m Message) ([]id.Round, error)
+	SendCMIX(message format.Message) (id.Round, error)
+	GetRekeyChan() chan id.ID
+	GetInstance() *network.Instance
+	//placeholder to stop active threads
+	Kill() bool
+}
diff --git a/key/context.go b/e2e/context.go
similarity index 93%
rename from key/context.go
rename to e2e/context.go
index 1d7ac802a..771646565 100644
--- a/key/context.go
+++ b/e2e/context.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"gitlab.com/elixxir/client/storage"
diff --git a/key/fingerprintAccess.go b/e2e/fingerprintAccess.go
similarity index 94%
rename from key/fingerprintAccess.go
rename to e2e/fingerprintAccess.go
index 586876090..a0dde4290 100644
--- a/key/fingerprintAccess.go
+++ b/e2e/fingerprintAccess.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 type fingerprintAccess interface {
 	// Receives a list of fingerprints to add. Overrides on collision.
diff --git a/key/key.go b/e2e/key.go
similarity index 99%
rename from key/key.go
rename to e2e/key.go
index b59c7f6af..69fa181d1 100644
--- a/key/key.go
+++ b/e2e/key.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"github.com/pkg/errors"
diff --git a/key/key_test.go b/e2e/key_test.go
similarity index 99%
rename from key/key_test.go
rename to e2e/key_test.go
index 2073d831a..78220af85 100644
--- a/key/key_test.go
+++ b/e2e/key_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"bytes"
diff --git a/key/manager.go b/e2e/manager.go
similarity index 99%
rename from key/manager.go
rename to e2e/manager.go
index 68886a2df..993502487 100644
--- a/key/manager.go
+++ b/e2e/manager.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"github.com/pkg/errors"
diff --git a/key/params.go b/e2e/params.go
similarity index 98%
rename from key/params.go
rename to e2e/params.go
index d8c62be12..93fcea60e 100644
--- a/key/params.go
+++ b/e2e/params.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import "gitlab.com/elixxir/crypto/e2e"
 
diff --git a/key/params_test.go b/e2e/params_test.go
similarity index 98%
rename from key/params_test.go
rename to e2e/params_test.go
index edf0360de..616947cf1 100644
--- a/key/params_test.go
+++ b/e2e/params_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 // Testing file for the params.go functions
 
diff --git a/key/session.go b/e2e/session.go
similarity index 99%
rename from key/session.go
rename to e2e/session.go
index f7f0bb34a..15e3e0640 100644
--- a/key/session.go
+++ b/e2e/session.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"encoding/json"
diff --git a/key/sessionBuff.go b/e2e/sessionBuff.go
similarity index 99%
rename from key/sessionBuff.go
rename to e2e/sessionBuff.go
index 19994b756..f5cba0e8e 100644
--- a/key/sessionBuff.go
+++ b/e2e/sessionBuff.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"encoding/base64"
diff --git a/key/sessionID.go b/e2e/sessionID.go
similarity index 95%
rename from key/sessionID.go
rename to e2e/sessionID.go
index 4ac8edfb7..c5837c2cc 100644
--- a/key/sessionID.go
+++ b/e2e/sessionID.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import "encoding/base64"
 
diff --git a/key/sessionType.go b/e2e/sessionType.go
similarity index 94%
rename from key/sessionType.go
rename to e2e/sessionType.go
index 163509b30..44081daa9 100644
--- a/key/sessionType.go
+++ b/e2e/sessionType.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 type SessionType uint8
 
diff --git a/key/sessionType_test.go b/e2e/sessionType_test.go
similarity index 97%
rename from key/sessionType_test.go
rename to e2e/sessionType_test.go
index 109376ac2..404ca7a76 100644
--- a/key/sessionType_test.go
+++ b/e2e/sessionType_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"math"
diff --git a/key/session_test.go b/e2e/session_test.go
similarity index 99%
rename from key/session_test.go
rename to e2e/session_test.go
index 63bd0215e..c3c785d31 100644
--- a/key/session_test.go
+++ b/e2e/session_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"gitlab.com/elixxir/client/storage"
diff --git a/key/stateVector.go b/e2e/stateVector.go
similarity index 97%
rename from key/stateVector.go
rename to e2e/stateVector.go
index ab22065a4..14cc72bf5 100644
--- a/key/stateVector.go
+++ b/e2e/stateVector.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"encoding/json"
@@ -8,6 +8,8 @@ import (
 	"time"
 )
 
+const currentStateVectorVersion = 0
+
 type stateVector struct {
 	ctx *context
 	key string
@@ -75,7 +77,7 @@ func (sv *stateVector) save() error {
 	}
 
 	obj := storage.VersionedObject{
-		Version:   currentSessionVersion,
+		Version:   currentStateVectorVersion,
 		Timestamp: now,
 		Data:      data,
 	}
diff --git a/key/stateVector_test.go b/e2e/stateVector_test.go
similarity index 99%
rename from key/stateVector_test.go
rename to e2e/stateVector_test.go
index 6f069b430..57dcf28b0 100644
--- a/key/stateVector_test.go
+++ b/e2e/stateVector_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"fmt"
diff --git a/key/status.go b/e2e/status.go
similarity index 96%
rename from key/status.go
rename to e2e/status.go
index d39610fe3..e47db3644 100644
--- a/key/status.go
+++ b/e2e/status.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import "fmt"
 
diff --git a/key/status_test.go b/e2e/status_test.go
similarity index 98%
rename from key/status_test.go
rename to e2e/status_test.go
index 991d76a9d..c7475900f 100644
--- a/key/status_test.go
+++ b/e2e/status_test.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 // Testing file for the status.go functions
 
diff --git a/key/store.go b/e2e/store.go
similarity index 99%
rename from key/store.go
rename to e2e/store.go
index b83301a97..23ac81153 100644
--- a/key/store.go
+++ b/e2e/store.go
@@ -1,4 +1,4 @@
-package key
+package e2e
 
 import (
 	"encoding/json"
-- 
GitLab