public Microsoft.ServiceBus.Channels.IConnection Connect(Uri uri, TimeSpan timeout) { EventTraceActivity eventTraceActivity = new EventTraceActivity(); TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); WebStream webStream = (new WebStream(uri, "connection", this.useHttpsMode, eventTraceActivity, uri)).Open(); Microsoft.ServiceBus.Channels.IConnection webStreamConnection = new WebStreamConnection(uri, this.bufferSize, eventTraceActivity, webStream, uri); webStreamConnection = SecureSocketUtil.InitiateSecureClientUpgradeIfNeeded(webStreamConnection, null, this.socketSecurityRole, uri.Host, timeoutHelper.RemainingTime()); SocketMessageHelper socketMessageHelper = new SocketMessageHelper(); Message message = Message.CreateMessage(socketMessageHelper.MessageVersion, "RelayedConnect", new ConnectMessage(uri)); TrackingIdHeader.TryAddOrUpdate(message.Headers, eventTraceActivity.ActivityId.ToString()); if (this.tokenProvider != null) { string absoluteUri = RelayedHttpUtility.ConvertToHttpUri(uri).AbsoluteUri; SecurityToken token = this.tokenProvider.GetToken(absoluteUri, "Send", false, timeoutHelper.RemainingTime()); message.Headers.Add(new RelayTokenHeader(token)); } socketMessageHelper.SendMessage(webStreamConnection, message, timeoutHelper.RemainingTime()); Message message1 = socketMessageHelper.ReceiveMessage(webStreamConnection, timeoutHelper.RemainingTime()); if (message1.IsFault) { throw ErrorUtility.ConvertToError(MessageFault.CreateFault(message1, 65536)); } return(webStreamConnection); }
public RelayedSocketInitiator(int bufferSize, TokenProvider tokenProvider, SocketSecurityRole socketSecurityMode) { this.bufferSize = bufferSize; this.tokenProvider = tokenProvider; this.socketSecurityMode = socketSecurityMode; if (this.tokenProvider != null) { this.socketSecurityMode = SocketSecurityRole.SslClient; } this.messageHelper = new SocketMessageHelper(); }
public RelayedConnectionSession(int bufferSize, Uri uri, TokenProvider tokenProvider, SocketSecurityRole socketSecurityMode, Guid id, RelayedSocketListener listener, EventTraceActivity activity) { this.bufferSize = bufferSize; this.uri = uri; this.tokenProvider = tokenProvider; this.socketSecurityMode = socketSecurityMode; this.id = id; this.listener = listener; this.Activity = activity; if (this.tokenProvider != null) { this.socketSecurityMode = SocketSecurityRole.SslClient; } this.messageHelper = new SocketMessageHelper(); this.mutex = new object(); }
private void SendRelayedConnectAndReceiveResponse(ClientWebSocketConnection connection, TimeoutHelper timeoutHelper) { SocketMessageHelper socketMessageHelper = new SocketMessageHelper(); Message message = Message.CreateMessage(socketMessageHelper.MessageVersion, "RelayedConnect", new ConnectMessage(connection.Uri)); TrackingIdHeader.TryAddOrUpdate(message.Headers, connection.Activity.ActivityId.ToString()); if (this.tokenProvider != null) { string absoluteUri = RelayedHttpUtility.ConvertToHttpUri(connection.Uri).AbsoluteUri; SecurityToken token = this.tokenProvider.GetToken(absoluteUri, "Send", false, timeoutHelper.RemainingTime()); message.Headers.Add(new RelayTokenHeader(token)); } socketMessageHelper.SendMessage(connection, message, timeoutHelper.RemainingTime()); Message message1 = socketMessageHelper.ReceiveMessage(connection, timeoutHelper.RemainingTime()); if (message1.IsFault) { throw ErrorUtility.ConvertToError(MessageFault.CreateFault(message1, 65536)); } }
public void Initialize(Uri uri, int bufferSize, Binding innerBinding) { this.uri = uri; this.bufferSize = bufferSize; ServiceEndpoint serviceEndpoint = this.serviceHost.AddServiceEndpoint(typeof(IRelayedConnectionControl), innerBinding, this.uri); serviceEndpoint.Behaviors.Add(this.nameSettings); TransportClientEndpointBehavior transportClientEndpointBehavior = new TransportClientEndpointBehavior(this.tokenProvider); serviceEndpoint.Behaviors.Add(transportClientEndpointBehavior); serviceEndpoint.Behaviors.Add(this.innerConnectionStatus); if (this.connectivitySettings != null || this.httpConnectivitySettings != null) { WebSocketRelayedConnectionListener.ConnectivitySettingsEndpointBehavior connectivitySettingsEndpointBehavior = new WebSocketRelayedConnectionListener.ConnectivitySettingsEndpointBehavior(this.connectivitySettings, this.httpConnectivitySettings); serviceEndpoint.Behaviors.Add(connectivitySettingsEndpointBehavior); } ServiceErrorHandlerBehavior serviceErrorHandlerBehavior = new ServiceErrorHandlerBehavior(); serviceErrorHandlerBehavior.HandleError += new EventHandler <ServiceErrorEventArgs>((object s, ServiceErrorEventArgs e) => Fx.Exception.TraceHandled(e.Exception, "WebSocketRelayedConnectionListener.IErrorHandler.HandleError", null)); this.serviceHost.Description.Behaviors.Add(serviceErrorHandlerBehavior); this.messageHelper = new SocketMessageHelper(); }
public ReceiveMessageAsyncResult(SocketMessageHelper messageHelper, Microsoft.ServiceBus.Channels.IConnection connection, TimeSpan timeout, AsyncCallback callback, object state) : base(timeout, callback, state) { this.messageHelper = messageHelper; this.Connection = connection; }