Skip to content

Commit

Permalink
Работа с сервером. Форма загрузки готова.
Browse files Browse the repository at this point in the history
  • Loading branch information
MilkRen committed May 6, 2024
1 parent 05f4163 commit b173108
Show file tree
Hide file tree
Showing 16 changed files with 233 additions and 195 deletions.
2 changes: 1 addition & 1 deletion LauncherDM/Properties/Resources.en.resx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<value>Reconnect after {0} ms...</value>
</data>
<data name="ServerClose" xml:space="preserve">
<value>The server is unavailable.</value>
<value>The server is unavailable (offline mode).</value>
</data>
<data name="Error" xml:space="preserve">
<value>Error!</value>
Expand Down
2 changes: 1 addition & 1 deletion LauncherDM/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
<value>Повторное подключение через {0} мс...</value>
</data>
<data name="ServerClose" xml:space="preserve">
<value>Сервер недоступен.</value>
<value>Сервер недоступен (автономный режим).</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка!</value>
Expand Down
2 changes: 0 additions & 2 deletions LauncherDM/Services/Interfaces/ILoadingWindowService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,5 @@ interface ILoadingWindowService
string GetTitle();

bool CheckUpdate();

string DescInfoConnect();
}
}
34 changes: 12 additions & 22 deletions LauncherDM/Services/LoadingWindowService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,30 @@ namespace LauncherDM.Services
{
class LoadingWindowService : ILoadingWindowService
{
private IServerRequestService serverRequest;
private IServerRequestService _serverRequest;

public bool CheckRequestServer()
public LoadingWindowService(ServerRequestService serverRequest)
{
if (serverRequest is null)
serverRequest = new ServerRequestService();
_serverRequest = serverRequest;
}

var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.Check);
public bool CheckRequestServer()
{
var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.Check);
return requestMessageServer?.Message.ToString() == "1";
}

public string GetTitle()
{
if (serverRequest is null)
serverRequest = new ServerRequestService();

var requestMessageServer = serverRequest.SendMessageRequest(MessageHeader.MessageType.TitleLoading);
return requestMessageServer.Message.ToString();
var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.TitleLoading);
return requestMessageServer?.Message.ToString();
}

public bool CheckUpdate()
{
var curver = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
return false;
}

public string DescInfoConnect()
{
if (serverRequest is null)
serverRequest = new ServerRequestService();

var requestMessageServer = serverRequest.SendMessageRequest(string.Empty,
MessageHeader.MessageType.Check, string.Empty.Length);
return requestMessageServer.Message.ToString();
var version = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
var requestMessageServer = _serverRequest.SendMessageRequest(MessageHeader.MessageType.Version);
return requestMessageServer?.Message.ToString() == version;
}
}
}
22 changes: 11 additions & 11 deletions LauncherDM/Services/ServerRequestService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ namespace LauncherDM.Services
/// </summary>
class ServerRequestService : IServerRequestService
{
private static readonly string ip = DataInfo.Ip;
private static readonly int port = DataInfo.Port;
private static readonly string _ip = DataInfo.Ip;
private static readonly int _port = DataInfo.Port;

private IPAddress ipAddress;
private IPEndPoint endPoint;
private IPAddress _ipAddress;
private IPEndPoint _endPoint;

public ServerRequestService()
{
ipAddress = IPAddress.Parse(ip);
endPoint = new IPEndPoint(ipAddress, port);
_ipAddress = IPAddress.Parse(_ip);
_endPoint = new IPEndPoint(_ipAddress, _port);
}

public MessageHeader SendMessageRequest(string data, MessageHeader.MessageType messageType, int length)
Expand All @@ -34,9 +34,9 @@ public MessageHeader SendMessageRequest(string data, MessageHeader.MessageType m
while (true)
{
tcpClient = new TcpClient();
tcpClient.Connect(endPoint);
tcpClient.Connect(_endPoint);

var messageHeader = new MessageHeader(data, messageType, length + MessageHeader.LengthAndDataType);
var messageHeader = new MessageHeader(data, messageType);
byte[] headerBytes = messageHeader.MessageToArray();

NetworkStream tcpStream = tcpClient.GetStream();
Expand Down Expand Up @@ -76,16 +76,16 @@ public MessageHeader SendMessageRequest(MessageHeader.MessageType messageType)
while (true)
{
tcpClient = new TcpClient();
tcpClient.Connect(endPoint);
tcpClient.Connect(_endPoint);

var messageHeader = new MessageHeader(messageType, 0);
var messageHeader = new MessageHeader(messageType);
byte[] headerBytes = messageHeader.MessageToArray();
NetworkStream tcpStream = tcpClient.GetStream();
tcpStream.Write(headerBytes);

do
{
byte[] getBytes = new byte[tcpClient.ReceiveBufferSize];
var getBytes = new byte[tcpClient.ReceiveBufferSize];
var lengthByte = tcpStream.Read(getBytes, 0, tcpClient.ReceiveBufferSize);
return MessageHeader.FromArray(getBytes.Take(lengthByte).ToArray());
} while (tcpStream.DataAvailable);
Expand Down
18 changes: 17 additions & 1 deletion LauncherDM/Styles/Other/ContextMenuStyle.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style x:Key="ContextMenuLoadingForm" TargetType="ContextMenu">

<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="#Cascadia Mono SemiLight"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Grid Background="Transparent">
<Border Margin="0,0,5,5" Background="{TemplateBinding Background}" BorderThickness="1" BorderBrush="White">
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" Margin="2"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
9 changes: 4 additions & 5 deletions LauncherDM/ViewModels/LoadingWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using LauncherDM.Properties;
using System.Diagnostics;

namespace LauncherDM.ViewModels
{
Expand Down Expand Up @@ -104,7 +102,7 @@ public LoadingWindowViewModel(ResourcesHelperService resourcesHelper)
private void Loading()
{
ICheckNetworkService checkNetwork = new CheckNetworkService();
ILoadingWindowService server = new LoadingWindowService();
ILoadingWindowService server = new LoadingWindowService(new ServerRequestService());

Task.Run(() =>
{
Expand All @@ -124,23 +122,24 @@ private void Loading()
server.CheckUpdate();
Thread.Sleep(5000);
OpenWindow();
break;
}
else
{
if (countMs >= 10000)
{
IDialogMessageBoxService dialogMessageBox = new DialogMessageBoxService();
dialogMessageBox.DialogShow(_resourcesHelper.LocalizationGet("Error"), _resourcesHelper.LocalizationGet("ServerClose"));
OpenWindow();
break;
}

countMs += 2000;
DescInfoConnect = string.Format(CultureInfo.InvariantCulture,
_resourcesHelper.LocalizationGet("Reconnection"), countMs);
Thread.Sleep(5000);
Thread.Sleep(countMs);
}
}
OpenWindow();
});
}

Expand Down
39 changes: 34 additions & 5 deletions ServerTCP/DataBase/DataBaseCommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,8 @@ public static void Insert(object table, MessageHeader.MessageType messageType)
{
using (var db = new ApplicationContext())
{
if (db.Database.CanConnect())
ConsoleExtension.WriteLineColor("База данных доступна.", ConsoleColor.DarkGreen);
else
ConsoleExtension.WriteLineColor("База данных не доступна!", ConsoleColor.DarkRed);

CheckConnect(db);

switch (messageType)
{
case MessageHeader.MessageType.Registration:
Expand All @@ -26,5 +23,37 @@ public static void Insert(object table, MessageHeader.MessageType messageType)
}
}

public static object Select(MessageHeader.MessageType messageType)
{
using (var db = new ApplicationContext())
{
CheckConnect(db);
object result = null;
switch (messageType)
{
case MessageHeader.MessageType.Version:
var appWPF = db.apps.Where(x => x.parametername == "wpfDMVersion").ToArray();
result = appWPF[0].parametervalue;
break;
default:
result = null;
break;
}

if (result is null)
throw new ArgumentNullException(nameof(result));

return result;
}
}

private static void CheckConnect(ApplicationContext db)
{
if (db.Database.CanConnect())
ConsoleExtension.WriteLineColor("База данных доступна.", ConsoleColor.DarkGreen);
else
ConsoleExtension.WriteLineColor("База данных не доступна!", ConsoleColor.DarkRed);
}

}
}
Loading

0 comments on commit b173108

Please sign in to comment.