@@ -12,36 +12,26 @@ import { getUrlProtocol } from "./utils/getUrlProtocol"
1212 */
1313export class MonitoringService {
1414 private readonly monitoringRepository : MonitoringRepository
15- private viemClient ! : PublicClient
15+ private readonly viemClient : PublicClient
16+ private readonly protocol : "http" | "websocket"
1617
1718 private latestBlockchainBlockNumber : bigint | undefined
1819 private latestMonitoringBlockNumber : bigint | undefined
1920 private isProcessing = false
2021
2122 constructor ( ) {
2223 this . monitoringRepository = new MonitoringRepository ( )
23- }
2424
25- /**
26- * Initialize and start the monitoring service
27- */
28- async start ( ) : Promise < void > {
29- await this . initializeClient ( )
30- await this . initializeMonitoring ( )
31- }
25+ const protocolResult = getUrlProtocol ( env . RPC_URL )
3226
33- /**
34- * Initialize the blockchain client
35- */
36- private async initializeClient ( ) : Promise < void > {
37- const protocol = getUrlProtocol ( env . RPC_URL )
38-
39- if ( protocol . isErr ( ) ) {
40- throw protocol . error
27+ if ( protocolResult . isErr ( ) ) {
28+ throw protocolResult . error
4129 }
4230
31+ this . protocol = protocolResult . value
32+
4333 let transport : Transport
44- if ( protocol . value === "http" ) {
34+ if ( this . protocol === "http" ) {
4535 transport = http ( env . RPC_URL )
4636 } else {
4737 transport = webSocket ( env . RPC_URL )
@@ -57,8 +47,8 @@ export class MonitoringService {
5747 name : "Unknown" ,
5848 rpcUrls : {
5949 default : {
60- http : protocol . value === "http" ? [ env . RPC_URL ] : [ ] ,
61- webSocket : protocol . value === "websocket" ? [ env . RPC_URL ] : [ ] ,
50+ http : this . protocol === "http" ? [ env . RPC_URL ] : [ ] ,
51+ webSocket : this . protocol === "websocket" ? [ env . RPC_URL ] : [ ] ,
6252 } ,
6353 } ,
6454 nativeCurrency : {
@@ -72,10 +62,23 @@ export class MonitoringService {
7262 transport,
7363 chain,
7464 } )
65+ }
7566
67+ /**
68+ * Initialize and start the monitoring service
69+ */
70+ async start ( ) : Promise < void > {
71+ await this . initializeClient ( )
72+ await this . initializeMonitoring ( )
73+ }
74+
75+ /**
76+ * Initialize the blockchain client
77+ */
78+ private async initializeClient ( ) : Promise < void > {
7679 await this . viemClient . watchBlocks ( {
7780 onBlock : this . onBlock . bind ( this ) ,
78- ...( protocol . value === "http" ? { pollingInterval : 250 } : { } ) ,
81+ ...( this . protocol === "http" ? { pollingInterval : 250 } : { } ) ,
7982 onError : ( error ) => {
8083 console . error ( "Error in watching blocks:" , error )
8184 process . exit ( 1 )
@@ -181,11 +184,13 @@ export class MonitoringService {
181184 functionName : "random" ,
182185 blockNumber,
183186 } )
184- await this . monitoringRepository . saveMonitoring (
185- new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Success , undefined , random ) ,
186- ) . catch ( ( error ) => {
187- console . error ( "Error in saving monitoring:" , error )
188- } )
187+ await this . monitoringRepository
188+ . saveMonitoring (
189+ new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Success , undefined , random ) ,
190+ )
191+ . catch ( ( error ) => {
192+ console . error ( "Error in saving monitoring:" , error )
193+ } )
189194 } catch ( err : unknown ) {
190195 let errorMessage : string | undefined
191196
@@ -195,11 +200,11 @@ export class MonitoringService {
195200 errorMessage = JSON . stringify ( err , bigIntReplacer )
196201 }
197202
198- await this . monitoringRepository . saveMonitoring (
199- new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Failure , errorMessage ) ,
200- ) . catch ( ( error ) => {
201- console . error ( "Error in saving monitoring:" , error )
202- } )
203+ await this . monitoringRepository
204+ . saveMonitoring ( new Monitoring ( blockNumber , block . timestamp , MonitoringResult . Failure , errorMessage ) )
205+ . catch ( ( error ) => {
206+ console . error ( "Error in saving monitoring:" , error )
207+ } )
203208 }
204209
205210 return ok ( undefined )
0 commit comments