Skip to content

Commit

Permalink
Injecting BlockWriter as part of PersistenInjectionModule
Browse files Browse the repository at this point in the history
Signed-off-by: Alfredo Gutierrez <[email protected]>
  • Loading branch information
AlfredoG87 committed Aug 24, 2024
1 parent 587fac2 commit cedb64d
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 4 deletions.
12 changes: 8 additions & 4 deletions server/src/main/java/com/hedera/block/server/BlockNodeApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import com.hedera.block.server.persistence.storage.PersistenceStorageConfig;
import com.hedera.block.server.persistence.storage.read.BlockAsDirReaderBuilder;
import com.hedera.block.server.persistence.storage.read.BlockReader;
import com.hedera.block.server.persistence.storage.write.BlockAsDirWriterBuilder;
import com.hedera.block.server.persistence.storage.write.BlockWriter;
import com.hedera.hapi.block.SubscribeStreamResponse;
import com.hedera.hapi.block.stream.Block;
Expand All @@ -52,22 +51,26 @@ public class BlockNodeApp {
private final ServiceStatus serviceStatus;
private final HealthService healthService;
private final BlockNodeContext blockNodeContext;
private final BlockWriter<BlockItem> blockWriter;

/**
* Has all needed dependencies to start the server and initialize the context.
*
* @param serviceStatus the status of the service
* @param healthService the health service
* @param blockNodeContext the context of the block node
* @param blockWriter the block writer
*/
@Inject
public BlockNodeApp(
@NonNull ServiceStatus serviceStatus,
@NonNull HealthService healthService,
@NonNull BlockNodeContext blockNodeContext) {
@NonNull BlockNodeContext blockNodeContext,
BlockWriter<BlockItem> blockWriter) {
this.serviceStatus = serviceStatus;
this.healthService = healthService;
this.blockNodeContext = blockNodeContext;
this.blockWriter = blockWriter;
}

/**
Expand All @@ -77,8 +80,9 @@ public BlockNodeApp(
*/
public void start() throws IOException {

final BlockWriter<BlockItem> blockWriter =
BlockAsDirWriterBuilder.newBuilder(blockNodeContext).build();
// final BlockWriter<BlockItem> blockWriter =
// BlockAsDirWriterBuilder.newBuilder(blockNodeContext).build();

final StreamMediator<BlockItem, ObjectEvent<SubscribeStreamResponse>> streamMediator =
LiveStreamMediatorBuilder.newBuilder(blockWriter, blockNodeContext, serviceStatus)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.hedera.block.server;

import com.hedera.block.server.health.HealthInjectionModule;
import com.hedera.block.server.persistence.storage.PersistenceInjectionModule;
import dagger.Component;
import javax.inject.Singleton;

Expand All @@ -26,6 +27,7 @@
modules = {
BlockNodeAppInjectionModule.class,
HealthInjectionModule.class,
PersistenceInjectionModule.class
})
public interface BlockNodeAppInjectionComponent {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright (C) 2024 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.hedera.block.server.persistence.storage;

import com.hedera.block.server.config.BlockNodeContext;
import com.hedera.block.server.persistence.storage.write.BlockAsDirWriterBuilder;
import com.hedera.block.server.persistence.storage.write.BlockWriter;
import com.hedera.hapi.block.stream.BlockItem;
import dagger.Module;
import dagger.Provides;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.IOException;
import javax.inject.Singleton;

/** A Dagger module for providing dependencies for Persistence Module. */
@Module
public interface PersistenceInjectionModule {

/**
* Provides a block writer singleton using the block node context.
*
* @param blockNodeContext the application context
* @return a block writer singleton
*/
@Provides
@Singleton
static BlockWriter<BlockItem> providesBlockWriter(@NonNull BlockNodeContext blockNodeContext) {
try {
return BlockAsDirWriterBuilder.newBuilder(blockNodeContext).build();
} catch (IOException e) {
throw new RuntimeException("Failed to create block writer", e);
}
}
}

0 comments on commit cedb64d

Please sign in to comment.