internal SsbConversationGroupReceiver(SqlConnection cn, CommittableTransaction tx, Guid cgId, ServiceInfo serviceInfo, SsbChannelListener channelListener) { this.con = cn; this.tx = tx; this.cgId = cgId; this.serviceInfo = serviceInfo; this.rdrlock = new object(); this.channelListener = channelListener; }
internal static ServiceInfo GetServiceInfo(string serviceName, TimeSpan timeout, SqlConnection con) { TimeoutHelper helper=new TimeoutHelper(timeout); ServiceInfo info = null; string SQL = @" select s.name As ServiceName , s.service_id As ServiceId , q.name As QueueName , q.object_id As QueueId from sys.services s inner join sys.service_queues q on s.service_queue_id=q.object_id where s.name=@ServiceName"; SqlCommand cmd = new SqlCommand(SQL, con); cmd.Parameters.Add("@ServiceName", SqlDbType.VarChar).Value = serviceName; cmd.CommandTimeout = helper.RemainingTimeInMillisecondsOrZero(); try { using (SqlDataReader rdr = cmd.ExecuteReader()) { if (!rdr.Read()) { throw new CommunicationException(string.Format("Service {0} not found", serviceName)); } info = new ServiceInfo(); info.ServiceName = rdr.GetString(0); info.ServiceId = rdr.GetInt32(1); info.QueueName = rdr.GetString(2); info.QueueId = rdr.GetInt32(3); rdr.Close(); } } catch (SqlException ex) { if (!helper.IsTimeRemaining) { throw new TimeoutException(String.Format("Timed out while getting service information. Timeout value was {0} seconds",timeout.TotalSeconds),ex); } else { throw new CommunicationException("An exception occurred while getting service information", ex); } } return info; }