Merge branch 'v1' of openprivacy/libricochet-go into master

<3
This commit is contained in:
Dan Ballard 2019-01-23 01:19:46 +00:00 committed by Gogs
commit 487b1e9ae0
6 changed files with 33 additions and 33 deletions

View File

@ -15,8 +15,7 @@ pipeline:
image: golang
commands:
- go list ./... | xargs go vet
#-set_exit_status too many lint fails for :(
- go list ./... | grep -v "/wire/" | grep -v "/examples/" | grep -v "/application" | xargs golint -set_exit_status
- go list ./... | grep -v "/wire/" | grep -v "/examples/" | xargs golint -set_exit_status
units-tests:
image: golang
commands:

View File

@ -23,13 +23,13 @@ type RicochetApplication struct {
name string
ls connectivity.ListenService
acn connectivity.ACN
instances []*ApplicationInstance
instances []*Instance
lock sync.Mutex
aif ApplicationInstanceFactory
aif InstanceFactory
}
// Init initializes the underlying RicochetApplication datastructure, making it ready for use
func (ra *RicochetApplication) Init(acn connectivity.ACN, name string, v3identity identity.Identity, af ApplicationInstanceFactory, cm ContactManagerInterface) {
func (ra *RicochetApplication) Init(acn connectivity.ACN, name string, v3identity identity.Identity, af InstanceFactory, cm ContactManagerInterface) {
ra.acn = acn
ra.name = name
ra.v3identity = v3identity
@ -74,15 +74,15 @@ func (ra *RicochetApplication) handleConnection(conn net.Conn) {
ra.lock.Unlock()
}
// HandleApplicationInstance delegates handling of a given ApplicationInstance to the Application.
func (ra *RicochetApplication) HandleApplicationInstance(rai *ApplicationInstance) {
// HandleApplicationInstance delegates handling of a given Instance to the Application.
func (ra *RicochetApplication) HandleApplicationInstance(rai *Instance) {
ra.lock.Lock()
ra.instances = append(ra.instances, rai)
ra.lock.Unlock()
}
// Open a connection to another Ricochet peer at onionAddress. Infof they are unknown to use, use requestMessage (otherwise can be blank)
func (ra *RicochetApplication) Open(onionAddress string, requestMessage string) (*ApplicationInstance, error) {
func (ra *RicochetApplication) Open(onionAddress string, requestMessage string) (*Instance, error) {
rc, err := goricochet.Open(ra.acn, onionAddress)
if err != nil {
log.Errorf("Error in application.Open(): %v\n", err)
@ -105,7 +105,7 @@ func (ra *RicochetApplication) Open(onionAddress string, requestMessage string)
}
// Broadcast performs the given function do() over all application instance (all connected peers)
func (ra *RicochetApplication) Broadcast(do func(rai *ApplicationInstance)) {
func (ra *RicochetApplication) Broadcast(do func(rai *Instance)) {
ra.lock.Lock()
for _, rai := range ra.instances {
do(rai)
@ -123,6 +123,7 @@ func (ra *RicochetApplication) Shutdown() {
ra.lock.Unlock()
}
// Close kills a connection by a given Onion Address
func (ra *RicochetApplication) Close(onion string) {
ra.lock.Lock()
for _, instance := range ra.instances {

View File

@ -5,30 +5,30 @@ import (
"git.openprivacy.ca/openprivacy/libricochet-go/connection"
)
// ApplicationInstance is a concrete instance of a ricochet application, encapsulating a connection
type ApplicationInstance struct {
// Instance is a concrete instance of a ricochet application, encapsulating a connection
type Instance struct {
connection.AutoConnectionHandler
Connection *connection.Connection
RemoteHostname string
}
// ApplicationInstanceFactory generates ApplicationInstances on a specific connection.
type ApplicationInstanceFactory struct {
handlerMap map[string]func(*ApplicationInstance) func() channels.Handler
// InstanceFactory generates ApplicationInstances on a specific connection.
type InstanceFactory struct {
handlerMap map[string]func(*Instance) func() channels.Handler
}
// Init sets up an Application Factory
func (af *ApplicationInstanceFactory) Init() {
af.handlerMap = make(map[string]func(*ApplicationInstance) func() channels.Handler)
func (af *InstanceFactory) Init() {
af.handlerMap = make(map[string]func(*Instance) func() channels.Handler)
}
// AddHandler defines a channel type -> handler construct function
func (af *ApplicationInstanceFactory) AddHandler(ctype string, chandler func(*ApplicationInstance) func() channels.Handler) {
func (af *InstanceFactory) AddHandler(ctype string, chandler func(*Instance) func() channels.Handler) {
af.handlerMap[ctype] = chandler
}
// GetHandlers returns all handlers
func (af *ApplicationInstanceFactory) GetHandlers() []string {
func (af *InstanceFactory) GetHandlers() []string {
keys := make([]string, len(af.handlerMap))
i := 0
@ -41,13 +41,13 @@ func (af *ApplicationInstanceFactory) GetHandlers() []string {
}
// GetHandler returns a set handler for the channel type.
func (af *ApplicationInstanceFactory) GetHandler(ctype string) func(*ApplicationInstance) func() channels.Handler {
func (af *InstanceFactory) GetHandler(ctype string) func(*Instance) func() channels.Handler {
return af.handlerMap[ctype]
}
// GetApplicationInstance builds a new application instance using a connection as a base.
func (af *ApplicationInstanceFactory) GetApplicationInstance(rc *connection.Connection) *ApplicationInstance {
rai := new(ApplicationInstance)
func (af *InstanceFactory) GetApplicationInstance(rc *connection.Connection) *Instance {
rai := new(Instance)
rai.Init()
rai.RemoteHostname = rc.RemoteHostname
rai.Connection = rc

View File

@ -16,11 +16,11 @@ import (
)
type EchoBotInstance struct {
rai *application.ApplicationInstance
rai *application.Instance
ra *application.RicochetApplication
}
func (ebi *EchoBotInstance) Init(rai *application.ApplicationInstance, ra *application.RicochetApplication) {
func (ebi *EchoBotInstance) Init(rai *application.Instance, ra *application.RicochetApplication) {
ebi.rai = rai
ebi.ra = ra
}
@ -50,7 +50,7 @@ func (ebi *EchoBotInstance) ChatMessageAck(messageID uint32, accepted bool) {
}
func (ebi *EchoBotInstance) SendChatMessage(rai *application.ApplicationInstance, message string) {
func (ebi *EchoBotInstance) SendChatMessage(rai *application.Instance, message string) {
ebi.rai.Connection.Do(func() error {
channel := ebi.rai.Connection.Channel("im.ricochet.chat", channels.Outbound)
if channel != nil {
@ -87,9 +87,9 @@ func main() {
os.Exit(1)
}
af := application.ApplicationInstanceFactory{}
af := application.InstanceFactory{}
af.Init()
af.AddHandler("im.ricochet.chat", func(rai *application.ApplicationInstance) func() channels.Handler {
af.AddHandler("im.ricochet.chat", func(rai *application.Instance) func() channels.Handler {
ebi := new(EchoBotInstance)
ebi.Init(rai, echobot)
return func() channels.Handler {

View File

@ -47,7 +47,7 @@ func (messages *Messages) Get() []Message {
type ChatEchoBot struct {
onion string
rai *application.ApplicationInstance
rai *application.Instance
n int
Messages MessageStack
}
@ -75,7 +75,7 @@ func (bot *ChatEchoBot) ChatMessage(messageID uint32, when time.Time, message st
return true
}
func SendMessage(rai *application.ApplicationInstance, message string) {
func SendMessage(rai *application.Instance, message string) {
log.Infof("SendMessage(to: %v, %v)\n", rai.RemoteHostname, message)
rai.Connection.Do(func() error {
@ -114,10 +114,10 @@ func TestApplicationIntegration(t *testing.T) {
messageStack.Init()
fmt.Println("Initializing application factory...")
af := application.ApplicationInstanceFactory{}
af := application.InstanceFactory{}
af.Init()
af.AddHandler("im.ricochet.contact.request", func(rai *application.ApplicationInstance) func() channels.Handler {
af.AddHandler("im.ricochet.contact.request", func(rai *application.Instance) func() channels.Handler {
return func() channels.Handler {
contact := new(channels.ContactRequestChannel)
contact.Handler = new(application.AcceptAllContactHandler)
@ -137,7 +137,7 @@ func TestApplicationIntegration(t *testing.T) {
}
fmt.Println("Initializing alice...")
af.AddHandler("im.ricochet.chat", func(rai *application.ApplicationInstance) func() channels.Handler {
af.AddHandler("im.ricochet.chat", func(rai *application.Instance) func() channels.Handler {
return func() channels.Handler {
chat := new(channels.ChatChannel)
chat.Handler = &ChatEchoBot{rai: rai, n: 0, Messages: messageStack, onion: aliceAddr}
@ -157,7 +157,7 @@ func TestApplicationIntegration(t *testing.T) {
bobAddr := utils.GetTorV3Hostname(bpubk)
fmt.Println("Seting up bob's onion " + bobAddr + "...")
bl, _ := acn.Listen(bpk, application.RicochetPort)
af.AddHandler("im.ricochet.chat", func(rai *application.ApplicationInstance) func() channels.Handler {
af.AddHandler("im.ricochet.chat", func(rai *application.Instance) func() channels.Handler {
return func() channels.Handler {
chat := new(channels.ChatChannel)
chat.Handler = &ChatEchoBot{rai: rai, n: 0, Messages: messageStack, onion: bobAddr}

View File

@ -14,4 +14,4 @@ echo "Linting:"
# Ignore wire packages as they are autogenerated
# Ignore examples as they are illustrative
# TODO Consider Renaming ApplicationInstance and ApplicationInstanceFactory to remove the last grep
go list ./... | grep -v "/wire/" | grep -v "/examples/" | grep -v "/application" | xargs golint
go list ./... | grep -v "/wire/" | grep -v "/examples/" | xargs golint