protected override void Load(ContainerBuilder builder) { // ITransportSettings builder.Register(c => new DefaultTransportSettings(this.scheme, HostName, this.port, this.tlsCertificate)) .As <ITransportSettings>() .SingleInstance(); // ITransportListenerProvider builder.Register(c => new AmqpTransportListenerProvider()) .As <ITransportListenerProvider>() .SingleInstance(); // ILinkHandlerProvider builder.Register( c => { IMessageConverter <AmqpMessage> messageConverter = new AmqpMessageConverter(); IMessageConverter <AmqpMessage> twinMessageConverter = new AmqpTwinMessageConverter(); IMessageConverter <AmqpMessage> directMethodMessageConverter = new AmqpDirectMethodMessageConverter(); var identityProvider = c.Resolve <IIdentityProvider>(); ILinkHandlerProvider linkHandlerProvider = new LinkHandlerProvider(messageConverter, twinMessageConverter, directMethodMessageConverter, identityProvider); return(linkHandlerProvider); }) .As <ILinkHandlerProvider>() .SingleInstance(); // Task<AmqpProtocolHead> builder.Register( async c => { var identityFactory = c.Resolve <IClientCredentialsFactory>(); var transportSettings = c.Resolve <ITransportSettings>(); var transportListenerProvider = c.Resolve <ITransportListenerProvider>(); var linkHandlerProvider = c.Resolve <ILinkHandlerProvider>(); var credentialsCacheTask = c.Resolve <Task <ICredentialsCache> >(); var authenticatorTask = c.Resolve <Task <IAuthenticator> >(); var connectionProviderTask = c.Resolve <Task <IConnectionProvider> >(); ICredentialsCache credentialsCache = await credentialsCacheTask; IAuthenticator authenticator = await authenticatorTask; IConnectionProvider connectionProvider = await connectionProviderTask; var webSocketListenerRegistry = c.Resolve <IWebSocketListenerRegistry>(); AmqpSettings amqpSettings = AmqpSettingsProvider.GetDefaultAmqpSettings( this.iotHubHostName, authenticator, identityFactory, linkHandlerProvider, connectionProvider, credentialsCache); return(new AmqpProtocolHead( transportSettings, amqpSettings, transportListenerProvider, webSocketListenerRegistry)); }) .As <Task <AmqpProtocolHead> >() .SingleInstance(); base.Load(builder); }
public void FromMessageTest() { // Arrange var collection = new TwinCollection() { ["prop"] = "value", ["$version"] = 1 }; string correlationId = Guid.NewGuid().ToString(); byte[] data = Encoding.UTF8.GetBytes(collection.ToJson()); IMessage message = new EdgeMessage.Builder(data) .SetSystemProperties( new Dictionary <string, string> { [SystemProperties.CorrelationId] = correlationId }) .Build(); IMessageConverter <AmqpMessage> messageConverter = new AmqpTwinMessageConverter(); // Act AmqpMessage amqpMessage = messageConverter.FromMessage(message); // Assert Assert.NotNull(amqpMessage); Assert.Equal(data, amqpMessage.GetPayloadBytes()); Assert.Equal(correlationId, amqpMessage.Properties.CorrelationId.ToString()); }
public void ToMessageTest() { // Arrange var collection = new TwinCollection() { ["prop"] = "value", ["$version"] = 1 }; byte[] data = Encoding.UTF8.GetBytes(collection.ToJson()); AmqpMessage amqpMessage = AmqpMessage.Create(new Data { Value = new ArraySegment <byte>(data) }); IMessageConverter <AmqpMessage> messageConverter = new AmqpTwinMessageConverter(); // Act IMessage message = messageConverter.ToMessage(amqpMessage); // Assert Assert.NotNull(message); Assert.Equal(data, message.Body); }