Skip to content

Commit ae2b2dd

Browse files
committed
不正なデータ受信時のエラーメッセージの追加
`TouchReceiver.cs`での例外処理の追加、`Program.cs`でのエラーハンドリング強化、`Resources.resw`に不正データ受信のエラーメッセージを追加しました。さらに、`MainViewModel.cs`でのエラーロギングとダイアログ表示処理を実装しました。
1 parent 1e62587 commit ae2b2dd

File tree

5 files changed

+48
-1
lines changed

5 files changed

+48
-1
lines changed

TouchSenderReceiver/Services/TouchReceiver.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ namespace TouchSenderReceiver.Services;
99
public class TouchReceiver
1010
{
1111
protected List<ITouchReceiverReactor> _reactors = [];
12+
13+
/// <summary>
14+
/// UDPで受信したデータを処理する
15+
/// </summary>
16+
/// <param name="portNumber"></param>
17+
/// <param name="cancellationToken"></param>
18+
/// <returns></returns>
19+
/// <exception cref="FormatException"></exception>
1220
public async Task StartAsync(int portNumber, CancellationToken cancellationToken)
1321
{
1422
// UDPでデータを受信
@@ -25,6 +33,11 @@ public async Task StartAsync(int portNumber, CancellationToken cancellationToken
2533
reactor.Receive(result.Payload!);
2634
}
2735
}
36+
else
37+
{
38+
// 不正なデータを受信した場合
39+
throw new FormatException(result.ErrorMessage);
40+
}
2841
}
2942
}
3043
}

TouchSenderTablet.CUI/Program.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,17 @@ static async Task ListenTouchSenderAsync(int portNumber, int sensitivity, bool l
7474
};
7575
});
7676
Console.WriteLine($"Listening on port {portNumber}...");
77-
await touchReceiver.StartAsync(portNumber, cancellationToken);
77+
try
78+
{
79+
await touchReceiver.StartAsync(portNumber, cancellationToken);
80+
}
81+
catch (FormatException e)
82+
{
83+
Console.WriteLine($"Recevied invalid data: {e.Message}");
84+
}
85+
finally
86+
{
87+
s_cts.Cancel();
88+
}
7889
}
7990
}

TouchSenderTablet.GUI/Strings/en-us/Resources.resw

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,10 @@ Note that if this window is in focus while a touch operation is performed, the c
229229
<data name="LogFile.Header" xml:space="preserve">
230230
<value>Log file</value>
231231
</data>
232+
<data name="InvalidDataReceptionError" xml:space="preserve">
233+
<value>Data Format Error</value>
234+
</data>
235+
<data name="InvalidDataReceptionErrorMessage" xml:space="preserve">
236+
<value>Incorrectly formatted data received.Please check the log for details.</value>
237+
</data>
232238
</root>

TouchSenderTablet.GUI/Strings/ja-jp/Resources.resw

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,10 @@
229229
<data name="LogFile.Header" xml:space="preserve">
230230
<value>ログファイル</value>
231231
</data>
232+
<data name="InvalidDataReceptionError" xml:space="preserve">
233+
<value>データフォーマット エラー</value>
234+
</data>
235+
<data name="InvalidDataReceptionErrorMessage" xml:space="preserve">
236+
<value>不正なフォーマットのデータを受信しました。詳しくはログを確認してください。</value>
237+
</data>
232238
</root>

TouchSenderTablet.GUI/ViewModels/MainViewModel.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,24 @@ private async Task StartTouchReceiverService(CancellationToken token)
150150
}
151151
catch (SocketException e)
152152
{
153+
_logger.LogError(e, "SocketException occurred");
153154
WeakReferenceMessenger.Default.Send(new ShowErrorDialogMessage()
154155
{
155156
Title = "NetworkError".GetLocalized(),
156157
Error = e,
157158
Message = "NetworkErrorMessage".GetLocalized(),
158159
});
159160
}
161+
catch (FormatException e)
162+
{
163+
_logger.LogError(e, "FormatException occurred");
164+
WeakReferenceMessenger.Default.Send(new ShowErrorDialogMessage()
165+
{
166+
Title = "InvalidDataReceptionError".GetLocalized(),
167+
Error = e,
168+
Message = "InvalidDataReceptionErrorMessage".GetLocalized(),
169+
});
170+
}
160171
finally
161172
{
162173
IsDataReceived = false;

0 commit comments

Comments
 (0)