1+ using Coin . Sdk . NP . Messages . V3 ;
2+ using Coin . Sdk . NP . Service ;
3+ using COINNP . Client . Mapping ;
4+
5+ namespace COINNP . Client . Adapters ;
6+
7+ /// <summary>
8+ /// Implements COIN's INumberPortabilityMessageListener and 'routes' all messages to OnMessage, which invokes a
9+ /// user-defined messagehandler
10+ /// </summary>
11+ internal class NPMessageListenerAdapter : INumberPortabilityMessageListener
12+ {
13+ private readonly INPMessageHandler _messagehandler ;
14+ private readonly INumberPortabilityService _numberportabilityservice ;
15+ private readonly IValueHelper _valuehelper ;
16+
17+ public NPMessageListenerAdapter ( INumberPortabilityService numberPortabilityService , INPMessageHandler messageHandler , IValueHelper valueHelper )
18+ {
19+ _numberportabilityservice = numberPortabilityService ?? throw new ArgumentNullException ( nameof ( numberPortabilityService ) ) ;
20+ _messagehandler = messageHandler ?? throw new ArgumentNullException ( nameof ( messageHandler ) ) ;
21+ _valuehelper = valueHelper ?? throw new ArgumentNullException ( nameof ( valueHelper ) ) ;
22+ }
23+
24+ public async void OnActivationServiceNumber ( string messageId , ActivationServiceNumberMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
25+ public async void OnCancel ( string messageId , CancelMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
26+ public async void OnDeactivation ( string messageId , DeactivationMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
27+ public async void OnDeactivationServiceNumber ( string messageId , DeactivationServiceNumberMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
28+ public async void OnEnumActivationNumber ( string messageId , EnumActivationNumberMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
29+ public async void OnEnumActivationOperator ( string messageId , EnumActivationOperatorMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
30+ public async void OnEnumActivationRange ( string messageId , EnumActivationRangeMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
31+ public async void OnEnumDeactivationNumber ( string messageId , EnumDeactivationNumberMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
32+ public async void OnEnumDeactivationOperator ( string messageId , EnumDeactivationOperatorMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
33+ public async void OnEnumDeactivationRange ( string messageId , EnumDeactivationRangeMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
34+ public async void OnEnumProfileActivation ( string messageId , EnumProfileActivationMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
35+ public async void OnEnumProfileDeactivation ( string messageId , EnumProfileDeactivationMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
36+ public async void OnPortingPerformed ( string messageId , PortingPerformedMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
37+ public async void OnPortingRequest ( string messageId , PortingRequestMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
38+ public async void OnPortingRequestAnswer ( string messageId , PortingRequestAnswerMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
39+ public async void OnPortingRequestAnswerDelayed ( string messageId , PortingRequestAnswerDelayedMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
40+ public async void OnRangeActivation ( string messageId , RangeActivationMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
41+ public async void OnRangeDeactivation ( string messageId , RangeDeactivationMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
42+ public async void OnTariffChangeServiceNumber ( string messageId , TariffChangeServiceNumberMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
43+ public async void OnErrorFound ( string messageId , ErrorFoundMessage message ) => await OnMessage ( messageId , message ) . ConfigureAwait ( false ) ;
44+
45+ private async Task OnMessage < T > ( string messageId , INpMessage < T > message )
46+ where T : INpMessageContent
47+ {
48+ try
49+ {
50+ if ( await _messagehandler . OnMessageAsync ( messageId , message . FromCOIN ( _valuehelper ) ) . ConfigureAwait ( false ) == Acknowledgement . ACK )
51+ {
52+ await _numberportabilityservice . SendConfirmationAsync ( messageId ) . ConfigureAwait ( false ) ;
53+ }
54+ }
55+ catch ( Exception ex )
56+ {
57+ await _messagehandler . OnExceptionAsync ( ex ) . ConfigureAwait ( false ) ;
58+ }
59+ }
60+
61+ public async void OnException ( Exception exception ) => await _messagehandler . OnExceptionAsync ( exception ) . ConfigureAwait ( false ) ;
62+ public async void OnKeepAlive ( ) => await _messagehandler . OnKeepAliveAsync ( ) . ConfigureAwait ( false ) ;
63+ public async void OnUnknownMessage ( string messageId , string message ) => await _messagehandler . OnUnknownMessageAsync ( messageId , message ) . ConfigureAwait ( false ) ;
64+ }
0 commit comments