Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
briar
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Julian Dehm
briar
Commits
287f3760
Verified
Commit
287f3760
authored
Jul 27, 2018
by
akwizgran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pass database key into LifecycleManager.
parent
58d09d07
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
31 additions
and
51 deletions
+31
-51
bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
.../org/briarproject/bramble/api/contact/ContactManager.java
+1
-1
bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
.../briarproject/bramble/api/lifecycle/LifecycleManager.java
+8
-7
bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
.../org/briarproject/bramble/api/sync/ValidationManager.java
+5
-2
bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java
...oject/bramble/api/versioning/ClientVersioningManager.java
+2
-1
bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
.../briarproject/bramble/lifecycle/LifecycleManagerImpl.java
+3
-8
bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
...va/org/briarproject/bramble/test/TestLifecycleModule.java
+2
-1
briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
...ain/java/org/briarproject/briar/android/BriarService.java
+4
-2
briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java
...g/briarproject/briar/feed/FeedManagerIntegrationTest.java
+2
-3
briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java
...oject/briar/feed/FeedManagerIntegrationTestComponent.java
+0
-5
briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
...ar/introduction/IntroductionIntegrationTestComponent.java
+0
-2
briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
...ject/briar/messaging/SimplexMessagingIntegrationTest.java
+1
-3
briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java
...r/messaging/SimplexMessagingIntegrationTestComponent.java
+0
-5
briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
...ava/org/briarproject/briar/test/BriarIntegrationTest.java
+3
-6
briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
...riarproject/briar/test/BriarIntegrationTestComponent.java
+0
-5
No files found.
bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
View file @
287f3760
...
...
@@ -16,7 +16,7 @@ public interface ContactManager {
/**
* Registers a hook to be called whenever a contact is added or removed.
* This method should be called before
* {@link LifecycleManager#startServices()}.
* {@link LifecycleManager#startServices(
SecretKey
)}.
*/
void
registerContactHook
(
ContactHook
hook
);
...
...
bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
View file @
287f3760
package
org.briarproject.bramble.api.lifecycle
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DatabaseComponent
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.sync.Client
;
...
...
@@ -16,7 +17,7 @@ import java.util.concurrent.ExecutorService;
public
interface
LifecycleManager
{
/**
* The result of calling {@link #startServices()}.
* The result of calling {@link #startServices(
SecretKey
)}.
*/
enum
StartResult
{
ALREADY_RUNNING
,
...
...
@@ -42,27 +43,27 @@ public interface LifecycleManager {
/**
* Registers a {@link Service} to be started and stopped. This method
* should be called before {@link #startServices()}.
* should be called before {@link #startServices(
SecretKey
)}.
*/
void
registerService
(
Service
s
);
/**
* Registers a {@link Client} to be started. This method should be called
* before {@link #startServices()}.
* before {@link #startServices(
SecretKey
)}.
*/
void
registerClient
(
Client
c
);
/**
* Registers an {@link ExecutorService} to be shut down. This method
* should be called before {@link #startServices()}.
* should be called before {@link #startServices(
SecretKey
)}.
*/
void
registerForShutdown
(
ExecutorService
e
);
/**
* Opens the {@link DatabaseComponent}
and starts any registered
* {@link Client Clients} and {@link Service Services}.
* Opens the {@link DatabaseComponent}
using the given key and starts any
*
registered
{@link Client Clients} and {@link Service Services}.
*/
StartResult
startServices
();
StartResult
startServices
(
SecretKey
dbKey
);
/**
* Stops any registered {@link Service Services}, shuts down any
...
...
bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
View file @
287f3760
package
org.briarproject.bramble.api.sync
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Metadata
;
import
org.briarproject.bramble.api.db.Transaction
;
...
...
@@ -35,7 +36,8 @@ public interface ValidationManager {
/**
* Registers the message validator for the given client. This method
* should be called before {@link LifecycleManager#startServices()}.
* should be called before
* {@link LifecycleManager#startServices(SecretKey)}.
*/
void
registerMessageValidator
(
ClientId
c
,
int
majorVersion
,
MessageValidator
v
);
...
...
@@ -43,7 +45,8 @@ public interface ValidationManager {
/**
* Registers the incoming message hook for the given client. The hook will
* be called once for each incoming message that passes validation. This
* method should be called before {@link LifecycleManager#startServices()}.
* method should be called before
* {@link LifecycleManager#startServices(SecretKey)}.
*/
void
registerIncomingMessageHook
(
ClientId
c
,
int
majorVersion
,
IncomingMessageHook
hook
);
...
...
bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java
View file @
287f3760
...
...
@@ -2,6 +2,7 @@ package org.briarproject.bramble.api.versioning;
import
org.briarproject.bramble.api.contact.Contact
;
import
org.briarproject.bramble.api.contact.ContactId
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.bramble.api.db.Transaction
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
...
...
@@ -25,7 +26,7 @@ public interface ClientVersioningManager {
/**
* Registers a client that will be advertised to contacts. The hook will
* be called when the visibility of the client changes. This method should
* be called before {@link LifecycleManager#startServices()}.
* be called before {@link LifecycleManager#startServices(
SecretKey
)}.
*/
void
registerClient
(
ClientId
clientId
,
int
majorVersion
,
int
minorVersion
,
ClientVersioningHook
hook
);
...
...
bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
View file @
287f3760
package
org.briarproject.bramble.lifecycle
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.db.DataTooNewException
;
import
org.briarproject.bramble.api.db.DataTooOldException
;
...
...
@@ -57,7 +56,6 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
private
final
List
<
Service
>
services
;
private
final
List
<
Client
>
clients
;
private
final
List
<
ExecutorService
>
executors
;
private
final
AccountManager
accountManager
;
private
final
IdentityManager
identityManager
;
private
final
Semaphore
startStopSemaphore
=
new
Semaphore
(
1
);
private
final
CountDownLatch
dbLatch
=
new
CountDownLatch
(
1
);
...
...
@@ -68,10 +66,9 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
@Inject
LifecycleManagerImpl
(
DatabaseComponent
db
,
EventBus
eventBus
,
AccountManager
accountManager
,
IdentityManager
identityManager
)
{
IdentityManager
identityManager
)
{
this
.
db
=
db
;
this
.
eventBus
=
eventBus
;
this
.
accountManager
=
accountManager
;
this
.
identityManager
=
identityManager
;
services
=
new
CopyOnWriteArrayList
<>();
clients
=
new
CopyOnWriteArrayList
<>();
...
...
@@ -99,7 +96,7 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
}
@Override
public
StartResult
startServices
()
{
public
StartResult
startServices
(
SecretKey
dbKey
)
{
if
(!
startStopSemaphore
.
tryAcquire
())
{
LOG
.
info
(
"Already starting or stopping"
);
return
ALREADY_RUNNING
;
...
...
@@ -108,9 +105,7 @@ class LifecycleManagerImpl implements LifecycleManager, MigrationListener {
LOG
.
info
(
"Starting services"
);
long
start
=
now
();
SecretKey
key
=
accountManager
.
getDatabaseKey
();
if
(
key
==
null
)
throw
new
IllegalStateException
();
boolean
reopened
=
db
.
open
(
key
,
this
);
boolean
reopened
=
db
.
open
(
dbKey
,
this
);
if
(
reopened
)
logDuration
(
LOG
,
"Reopening database"
,
start
);
else
logDuration
(
LOG
,
"Creating database"
,
start
);
identityManager
.
storeLocalAuthor
();
...
...
bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
View file @
287f3760
package
org.briarproject.bramble.test
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.lifecycle.IoExecutor
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.lifecycle.Service
;
...
...
@@ -39,7 +40,7 @@ public class TestLifecycleModule {
}
@Override
public
StartResult
startServices
()
{
public
StartResult
startServices
(
SecretKey
dbKey
)
{
return
StartResult
.
SUCCESS
;
}
...
...
briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
View file @
287f3760
...
...
@@ -18,6 +18,7 @@ import android.support.v4.app.NotificationCompat;
import
android.support.v4.content.ContextCompat
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.crypto.SecretKey
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult
;
import
org.briarproject.bramble.api.system.AndroidExecutor
;
...
...
@@ -97,7 +98,8 @@ public class BriarService extends Service {
stopSelf
();
return
;
}
if
(!
accountManager
.
hasDatabaseKey
())
{
SecretKey
dbKey
=
accountManager
.
getDatabaseKey
();
if
(
dbKey
==
null
)
{
LOG
.
info
(
"No database key"
);
stopSelf
();
return
;
...
...
@@ -142,7 +144,7 @@ public class BriarService extends Service {
nm
.
cancel
(
REMINDER_NOTIFICATION_ID
);
// Start the services in a background thread
new
Thread
(()
->
{
StartResult
result
=
lifecycleManager
.
startServices
();
StartResult
result
=
lifecycleManager
.
startServices
(
dbKey
);
if
(
result
==
SUCCESS
)
{
started
=
true
;
}
else
if
(
result
==
ALREADY_RUNNING
)
{
...
...
briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java
View file @
287f3760
...
...
@@ -27,6 +27,7 @@ import org.junit.Test;
import
java.io.File
;
import
java.util.Collection
;
import
static
org
.
briarproject
.
bramble
.
test
.
TestUtils
.
getSecretKey
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
...
...
@@ -53,10 +54,8 @@ public class FeedManagerIntegrationTest extends BriarTestCase {
LocalAuthor
localAuthor
=
identityManager
.
createLocalAuthor
(
"feedTest"
);
identityManager
.
registerLocalAuthor
(
localAuthor
);
component
.
getAccountManager
().
createAccount
(
"password"
);
lifecycleManager
=
component
.
getLifecycleManager
();
lifecycleManager
.
startServices
();
lifecycleManager
.
startServices
(
getSecretKey
()
);
lifecycleManager
.
waitForStartup
();
feedManager
=
component
.
getFeedManager
();
...
...
briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java
View file @
287f3760
package
org.briarproject.briar.feed
;
import
org.briarproject.bramble.account.AccountModule
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.client.ClientModule
;
...
...
@@ -38,7 +36,6 @@ import dagger.Component;
TestSecureRandomModule
.
class
,
TestSocksModule
.
class
,
TestDnsModule
.
class
,
AccountModule
.
class
,
BriarClientModule
.
class
,
ClientModule
.
class
,
ContactModule
.
class
,
...
...
@@ -82,8 +79,6 @@ interface FeedManagerIntegrationTestComponent {
IdentityManager
getIdentityManager
();
AccountManager
getAccountManager
();
LifecycleManager
getLifecycleManager
();
FeedManager
getFeedManager
();
...
...
briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
View file @
287f3760
package
org.briarproject.briar.introduction
;
import
org.briarproject.bramble.account.AccountModule
;
import
org.briarproject.bramble.client.ClientModule
;
import
org.briarproject.bramble.contact.ContactModule
;
import
org.briarproject.bramble.crypto.CryptoExecutorModule
;
...
...
@@ -37,7 +36,6 @@ import dagger.Component;
TestDatabaseModule
.
class
,
TestPluginConfigModule
.
class
,
TestSecureRandomModule
.
class
,
AccountModule
.
class
,
BlogModule
.
class
,
BriarClientModule
.
class
,
ClientModule
.
class
,
...
...
briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
View file @
287f3760
...
...
@@ -103,11 +103,9 @@ public class SimplexMessagingIntegrationTest extends BriarTestCase {
// Add an identity for the user
IdentityManager
identityManager
=
device
.
getIdentityManager
();
identityManager
.
registerLocalAuthor
(
local
);
// Create an account
device
.
getAccountManager
().
createAccount
(
"password"
);
// Start the lifecycle manager
LifecycleManager
lifecycleManager
=
device
.
getLifecycleManager
();
lifecycleManager
.
startServices
();
lifecycleManager
.
startServices
(
getSecretKey
()
);
lifecycleManager
.
waitForStartup
();
// Add the other user as a contact
ContactManager
contactManager
=
device
.
getContactManager
();
...
...
briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java
View file @
287f3760
package
org.briarproject.briar.messaging
;
import
org.briarproject.bramble.account.AccountModule
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.contact.ContactManager
;
import
org.briarproject.bramble.api.event.EventBus
;
import
org.briarproject.bramble.api.identity.IdentityManager
;
...
...
@@ -41,7 +39,6 @@ import dagger.Component;
TestDatabaseModule
.
class
,
TestPluginConfigModule
.
class
,
TestSecureRandomModule
.
class
,
AccountModule
.
class
,
BriarClientModule
.
class
,
ClientModule
.
class
,
ContactModule
.
class
,
...
...
@@ -80,8 +77,6 @@ interface SimplexMessagingIntegrationTestComponent {
IdentityManager
getIdentityManager
();
AccountManager
getAccountManager
();
ContactManager
getContactManager
();
MessagingManager
getMessagingManager
();
...
...
briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
View file @
287f3760
...
...
@@ -140,9 +140,6 @@ public abstract class BriarIntegrationTest<C extends BriarIntegrationTestCompone
assertTrue
(
testDir
.
mkdirs
());
createComponents
();
c0
.
getAccountManager
().
createAccount
(
"password"
);
c1
.
getAccountManager
().
createAccount
(
"password"
);
c2
.
getAccountManager
().
createAccount
(
"password"
);
identityManager0
=
c0
.
getIdentityManager
();
identityManager1
=
c1
.
getIdentityManager
();
identityManager2
=
c2
.
getIdentityManager
();
...
...
@@ -196,9 +193,9 @@ public abstract class BriarIntegrationTest<C extends BriarIntegrationTestCompone
lifecycleManager0
=
c0
.
getLifecycleManager
();
lifecycleManager1
=
c1
.
getLifecycleManager
();
lifecycleManager2
=
c2
.
getLifecycleManager
();
lifecycleManager0
.
startServices
();
lifecycleManager1
.
startServices
();
lifecycleManager2
.
startServices
();
lifecycleManager0
.
startServices
(
getSecretKey
()
);
lifecycleManager1
.
startServices
(
getSecretKey
()
);
lifecycleManager2
.
startServices
(
getSecretKey
()
);
lifecycleManager0
.
waitForStartup
();
lifecycleManager1
.
waitForStartup
();
lifecycleManager2
.
waitForStartup
();
...
...
briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
View file @
287f3760
package
org.briarproject.briar.test
;
import
org.briarproject.bramble.account.AccountModule
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.client.ClientHelper
;
import
org.briarproject.bramble.api.contact.ContactManager
;
import
org.briarproject.bramble.api.db.DatabaseComponent
;
...
...
@@ -56,7 +54,6 @@ import dagger.Component;
TestDatabaseModule
.
class
,
TestPluginConfigModule
.
class
,
TestSecureRandomModule
.
class
,
AccountModule
.
class
,
BlogModule
.
class
,
BriarClientModule
.
class
,
ClientModule
.
class
,
...
...
@@ -123,8 +120,6 @@ public interface BriarIntegrationTestComponent {
IdentityManager
getIdentityManager
();
AccountManager
getAccountManager
();
ClientHelper
getClientHelper
();
ContactManager
getContactManager
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment