/// <summary> /// Will start a shoutcast mode conversation, the sender sending to all. /// </summary> /// <param name="sender"></param> /// <param name="requestMessage"></param> /// <param name="timeout"></param> /// <returns></returns> public ConversationMultiPoint CreateConversation(ArbiterClientId senderID, Message message, TimeSpan timeout) { if (message is TransportMessage) { SystemMonitor.CheckError(((TransportMessage)message).TransportInfo.CurrentTransportInfo != null); TracerHelper.Trace("sender[" + senderID.Id.Name + "], message [" + message.GetType().Name + "] [" + ((TransportMessage)message).TransportInfo.TransportInfoCount + "]"); } else { TracerHelper.Trace("sender[" + senderID.Id.Name + "], message [" + message.GetType().Name + "]"); } if (GetClientByID(senderID, false) == null) { SystemMonitor.Error("Creating conversation by not present sender/owner."); return(null); } ConversationMultiPoint conversation = new ConversationMultiPoint(_executionManager, message, senderID, GatherMessageClients(message, senderID), timeout); if (_isDisposed) {// Possible to get disposed while operating here. return(null); } lock (_timeOutMonitor) { _timeOutMonitor.AddEntity(conversation); } return(conversation); }
/// <summary> /// Will start a shoutcast mode conversation, the sender sending to all. /// </summary> /// <param name="sender"></param> /// <param name="requestMessage"></param> /// <param name="timeout"></param> /// <returns></returns> public ConversationMultiPoint CreateConversation(ArbiterClientId senderID, Message message, TimeSpan timeout) { if (message is TransportMessage) { SystemMonitor.CheckError(((TransportMessage)message).TransportInfo.CurrentTransportInfo != null); TracerHelper.Trace("sender[" + senderID.Id.Name + "], message [" + message.GetType().Name + "] [" + ((TransportMessage)message).TransportInfo.TransportInfoCount + "]"); } else { TracerHelper.Trace("sender[" + senderID.Id.Name + "], message [" + message.GetType().Name + "]"); } if (GetClientByID(senderID, false) == null) { SystemMonitor.Error("Creating conversation by not present sender/owner."); return null; } ConversationMultiPoint conversation = new ConversationMultiPoint(_executionManager, message, senderID, GatherMessageClients(message, senderID), timeout); if (_isDisposed) {// Possible to get disposed while operating here. return null; } lock (_timeOutMonitor) { _timeOutMonitor.AddEntity(conversation); } return conversation; }