Files
egwmultienginemanager/EgwMultiEngineManager.Console/MainModule.vb
T
Emmanuele Sassi 52703b7b3d - aggiunta stringa di connessione a Redis ufficio
- aggiunti stopwatch
2025-07-22 09:56:12 +02:00

83 lines
3.5 KiB
VB.net

Imports System.IO
Imports EgwMultiEngineManager.ExecProcessManager
Imports Newtonsoft.Json
Imports Pipelines.Sockets.Unofficial.SocketConnection
Imports StackExchange.Redis
Module MainModule
Private m_bDebug As Boolean = False
Private m_ExecProcessManager As ExecProcessManager
Private m_stopWatch As New Stopwatch()
' Riferimento al gestore del server Redis
Private m_RedisManager As RedisManager
Friend ReadOnly Property RedisManager As RedisManager
Get
Return m_RedisManager
End Get
End Property
Private InputChn As New RedisChannel("EgwEngineInput", RedisChannel.PatternMode.Auto)
Private OutputChn As New RedisChannel("EgwEngineOutput", RedisChannel.PatternMode.Auto)
Sub Main()
If IsNothing(m_ExecProcessManager) Then
Dim sCamExePath As String = "c:\EgtProg\EgtEngine\EgtEngineR32.exe"
Dim sMainLuaPath As String = "c:\Temp\EgwMultiEngineManager\Pipe.lua"
m_ExecProcessManager = New ExecProcessManager(sCamExePath, sMainLuaPath, 1, ReturnModes.EVENT_)
m_ExecProcessManager.StartExecutionThread()
AddHandler m_ExecProcessManager.m_AnswerReceived, AddressOf ExecProcessManager_AnswerReceived
End If
Dim sConnection As String = "redis.ufficio:26379, serviceName=devel, DefaultDatabase=6, keepAlive=180, connectTimeout=15000, syncTimeout=15000, asyncTimeout=15000, abortConnect=false, ssl=false, allowAdmin=true"
m_RedisManager = New RedisManager(sConnection, 1)
m_RedisManager.SubscribeChannel("EgwEngineInput", AddressOf EgwEngineInputHandler)
'Dim sRettad As String = System.Console.ReadLine()
' funzionamento simulato
If m_bDebug Then
m_RedisManager.SubscribeChannel("EgwEngineOutput", AddressOf EgwEngineOutputHandler)
Dim sRead As String = System.Console.ReadLine()
While Not String.IsNullOrWhiteSpace(sRead)
' passo dati per esecuzione
Dim Args As New Dictionary(Of String, String)
Dim ReadFile As String = File.ReadAllText("c:\Temp\EgwMultiEngineManager\AntaSingola.jwd")
Args.Add("Mode", "1")
Args.Add("Jwd", ReadFile)
Dim InputValue As New RedisValue(New ProcessArgs(1, Args).sProcessArgs)
m_RedisManager.Subscriber.Publish(InputChn, InputValue)
sRead = System.Console.ReadLine()
End While
End If
End Sub
Private Sub ExecProcessManager_AnswerReceived(Answer As ProcessArgsResult)
m_RedisManager.Subscriber.Publish(OutputChn, JsonConvert.SerializeObject(Answer))
m_stopWatch.Stop()
' Get the elapsed time as a TimeSpan value.
Dim ts As TimeSpan = m_stopWatch.Elapsed
' Format and display the TimeSpan value.
Dim elapsedTime As String = String.Format("{0:N3}", ts.TotalMilliseconds)
System.Console.WriteLine("Risposto in " + elapsedTime)
End Sub
Private Sub EgwEngineInputHandler(RedisChannel As RedisChannel, RedisValue As RedisValue)
'System.Console.WriteLine("Ricevuto valore " & RedisValue.ToString() & " dal canale " & RedisChannel.ToString())
System.Console.WriteLine("Ricevuto valore dal canale " & RedisChannel.ToString())
m_stopWatch.Restart()
Dim Request As ProcessArgs = JsonConvert.DeserializeObject(Of ProcessArgs)(RedisValue)
m_ExecProcessManager.ArgumentsEnqueue(Request)
End Sub
Private Sub EgwEngineOutputHandler(RedisChannel As RedisChannel, RedisValue As RedisValue)
System.Console.WriteLine("Ricevuto valore " & RedisValue.ToString() & " dal canale " & RedisChannel.ToString())
End Sub
End Module