/// <summary> /// 如果其他Session执行结束发送开始执行TestProjectTeardown的命令 /// </summary> private void RunRootTearDownIfOtherSessionOver() { ControlMessage startMessage = new ControlMessage(MessageNames.CtrlStart, CommonConst.TestGroupSession); startMessage.AddParam("RunTearDown", true.ToString()); _globalInfo.MessageTransceiver.Send(startMessage); }
public void Abort(int sessionId) { ControlMessage abortMessage = new ControlMessage(MessageNames.CtrlAbort, CommonConst.BroadcastSession); abortMessage.AddParam("IsRequest", true.ToString()); abortMessage.Id = sessionId; _globalInfo.MessageTransceiver.Send(abortMessage); AbortEventInfo abortEventInfo = new AbortEventInfo(sessionId, true, false); _globalInfo.EventQueue.Enqueue(abortEventInfo); if (null == _abortBlocker) { _abortBlocker = new BlockHandle(); } // 目前使用同步Abort,每次只能释放一个 _abortBlocker.Timeout = _globalInfo.ConfigData.GetProperty <int>("AbortTimeout"); bool isNotTimeout = _abortBlocker.Wait(Constants.AbortState); if (!isNotTimeout) { _globalInfo.LogService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, $"Session {sessionId} abort timeout."); } }
/// <summary> /// Request the additional of a keyframe at the given frame and post the associated control message. /// </summary> /// <param name="frameNumber">The keyframe frame number.</param> /// <param name="streamOffset">The stream position/bytes read (total) on this frame.</param> private void RequestKeyframe(uint frameNumber, uint offsetFrameNumber, long streamOffset) { if (HaveKeyframe(frameNumber) || !AllowKeyframes) { return; } // Add a placeholder. Keyframe keyframe = new Keyframe(); keyframe.FrameNumber = frameNumber; keyframe.OffsetFrameNumber = offsetFrameNumber; keyframe.StreamOffset = streamOffset; lock (_keyframes) { _keyframes.Add(keyframe); } PacketBuffer packet = new PacketBuffer(PacketHeader.Size + 32); ControlMessage message = new ControlMessage(); message.ControlFlags = 0; message.Value32 = frameNumber; message.Value64 = 0; packet.Reset((ushort)RoutingID.Control, (ushort)ControlMessageID.Keyframe); message.Write(packet); if (packet.FinalisePacket()) { _packetQueue.Enqueue(packet); } }
/// <summary> /// 如果TestProject的SetUp执行成功发送开始测试Session的命令 /// </summary> private void StartTestSessionsIfSetUpOver(ISequenceTestResult result) { if (result.SessionId != CommonConst.TestGroupSession || result.SequenceIndex != CommonConst.SetupIndex) { return; } _globalInfo.EventDispatcher.SequenceOver -= StartTestSessionsIfSetUpOver; if (result.ResultState != RuntimeState.Success) { return; } ControlMessage startMessage = new ControlMessage(MessageNames.CtrlStart, CommonConst.BroadcastSession); startMessage.AddParam("RunAll", true.ToString()); // 发送开始指令 foreach (int session in _testsMaintainer.TestContainers.Keys) { if (session == CommonConst.TestGroupSession) { continue; } startMessage.Id = session; _globalInfo.MessageTransceiver.Send(startMessage); } }
private RemotePlayContext SendInitControlMessages(Socket udpClient) { /******** Initial control message 1 ********/ byte[] controlMessage1Payload = HexUtil.Unhexlify("0064006400004823"); ushort initialControlMessage1PayloadSize = (ushort)(12 + controlMessage1Payload.Length); ControlMessage initialMessage1 = new ControlMessage(0, 0, 0, 0, 1, 0, initialControlMessage1PayloadSize, 0x4823, 0x19000); initialMessage1.UnParsedPayload = controlMessage1Payload; byte[] initialControlMessage1Data = GetByteArrayForControlMessage(initialMessage1); ControlResult initControlResult1 = SendControlDataAndWaitForAnswer(udpClient, initialControlMessage1Data, 1, "Send Init Control message 1"); if (!initControlResult1.WasSuccessful) { return(null); } ControlMessage initialAnswer1 = initControlResult1.ControlMessages[0]; /******** Initial control message 2 ********/ byte[] initialAnswer1Payload = initialAnswer1.UnParsedPayload; MemoryStream memoryBuffer = new MemoryStream(initialAnswer1Payload) { Position = 8 }; byte[] funcIncrBuffer = new byte[4]; memoryBuffer.Read(funcIncrBuffer, 0, funcIncrBuffer.Length); uint funcIncrValue = ByteUtil.ByteArrayToUInt(funcIncrBuffer); memoryBuffer.Position = 28; byte[] lastAnswerPart = new byte[memoryBuffer.Length - memoryBuffer.Position]; memoryBuffer.Read(lastAnswerPart, 0, lastAnswerPart.Length); byte[] funcIncr = ByteUtil.UIntToByteArray(initialAnswer1.FuncIncr); byte[] classValue = ByteUtil.UIntToByteArray(initialAnswer1.ClassValue); byte[] controlMessage2Payload = ByteUtil.ConcatenateArrays(funcIncr, classValue, funcIncr, lastAnswerPart); ushort initialControlMessage2PayloadSize = (ushort)(12 + controlMessage2Payload.Length); ControlMessage controlMessage2 = new ControlMessage(0, initialAnswer1.FuncIncr, 0, 0, 10, 0, initialControlMessage2PayloadSize, funcIncrValue, initialAnswer1.ReceiverId); controlMessage2.UnParsedPayload = controlMessage2Payload; byte[] initialControlMessage2Data = GetByteArrayForControlMessage(controlMessage2); ControlResult initControlResult2 = SendControlDataAndWaitForAnswer(udpClient, initialControlMessage2Data, 1, "Send Init Control message 2"); if (!initControlResult2.WasSuccessful) { return(null); } RemotePlayContext remotePlayContext = new RemotePlayContext() { ReceiverId = initialAnswer1.FuncIncr, FuncIncr = initialMessage1.FuncIncr }; return(remotePlayContext); }
/*********** heartbeat handling ***********/ private void HandleHeartBeat(Socket udpSocket, RemotePlayContext remotePlayContext) { Thread heartBeatThread = new Thread(() => { try { do { Thread.Sleep(1000); byte[] heartbeatPayload = HexUtil.Unhexlify("000803"); ushort heartbeatPayloadSize = (ushort)(12 + heartbeatPayload.Length); ControlMessage heartbeat = new ControlMessage((byte)0, remotePlayContext.ReceiverId, 0, 0, 0, 1, heartbeatPayloadSize, remotePlayContext.FuncIncr, 0x10000); heartbeat.UnParsedPayload = heartbeatPayload; SendCryptedControlMessage(heartbeat, remotePlayContext, udpSocket); } while (true); } catch (Exception) { // ignore } }); heartBeatThread.IsBackground = true; heartBeatThread.Start(); }
public void MainTest() { using (var session = Domain.OpenSession()) using (var t = session.OpenTransaction()) { var controlId = Guid.NewGuid(); var messageId = Guid.NewGuid(); var control = new Control(controlId); var message = new ControlMessage(messageId) { Owner = control }; session.SaveChanges(); var ids = new[] { controlId, messageId }; var itemsX = session.Query.All <Control>().Where(a => a.Messages.Select(b => b.Id).Any(id => ids.Contains(id))).ToList(); Assert.AreEqual(1, itemsX.Count); Assert.AreSame(control, itemsX[0]); var itemsA = session.Query.All <Control>().Where(a => ids.Any(id => a.Messages.Select(b => b.Id).Contains(id))).ToList(); Assert.AreEqual(1, itemsA.Count); Assert.AreSame(control, itemsA[0]); var itemsB = session.Query.All <Control>().Where(a => ids.ContainsAny(a.Messages.Select(b => b.Id))).ToList(); Assert.AreEqual(1, itemsB.Count); Assert.AreSame(control, itemsB[0]); t.Complete(); } }
public void BrodcastMessage(ControlMessage message) { if (Adresses == null || Adresses.Count == 0) { throw new InvalidOperationException("Set Addresses list first!"); } if (!SenderID.HasValue) { throw new InvalidOperationException("Set SenderID first!"); } Adresses.ForEach(address => { using (ZSocket requester = new ZSocket(ZContextProvider.GlobalContext, ZSocketType.REQ)) { requester.Connect(address); requester.Send(new ZFrame(BinarySerializer <ControlMessage> .ToByteArray(message))); using (ZFrame reply = requester.ReceiveFrame()) { ControlMessage rcvedMsg = BinarySerializer <ControlMessage> .ToObject(reply.Read()); } } }); }
static void OnEditorMessage(ControlMessage msg) { switch (msg.msg) { case ControlMessage.Message.TIMELINECTRL_BEGIN_DRAG_TAG: case ControlMessage.Message.TIMELINECTRL_DRAG_TAG: case ControlMessage.Message.TIMELINECTRL_END_DRAG_TAG: break; case ControlMessage.Message.TIMELINECTRL_BEGIN_DRAG_ITEMS: OnTimeLineDragItemsBegin(msg.sender, msg.param0 as List <TimeLineViewCtrl.ItemSelectInfo>); break; case ControlMessage.Message.TIMELINECTRL_DRAG_ITEMS: OnTimeLineDragItems(msg.sender, msg.param0 as List <TimeLineViewCtrl.ItemSelectInfo>); break; case ControlMessage.Message.TIMELINECTRL_END_DRAG_ITEMS: OnTimeLineDragItemsEnd(msg.sender, msg.param0 as List <TimeLineViewCtrl.ItemSelectInfo>); break; default: break; } }
private void ProcessControlMessage(ControlMessage message) { switch (message.Name) { case MessageNames.CtrlStart: _context.CtrlStartMessage = message; break; case MessageNames.CtrlAbort: _context.Cancellation.Cancel(); _context.DebugManager.Dispose(); // 如果线程还未结束,则等待 if (_context.FlowControlThread.IsAlive) { if (_context.FlowControlThread.Join(_context.GetProperty <int>("AbortTimeout"))) { SlaveFlowTaskBase.CurrentFlowTask?.TaskAbortAction(); } else { _context.FlowControlThread.Abort(); } _context.CoroutineManager.Dispose(); } break; } }
protected override ScenarioResult internalRun(CancellationToken ct) { try { int t; for (t = 0; t < nTimes; t++) { MfeMessage m; if ((t & 1) == 0) { //m = new GetMomenteryStatusMessage(); m = new ControlMessage(true, 1, ControlMessage.TxAntenna.ANT0, ControlMessage.Frequency.HIGH, false, (ushort)t, false); } else { //m = new GetVersionMessage(); m = new ControlMessage(true, 1, ControlMessage.TxAntenna.ANT1, ControlMessage.Frequency.HIGH, false, (ushort)t, false); } device.sendMsg(m); //MfeResponse resp = (MfeResponse)device.receiveAnswer(new System.Threading.CancellationToken()); //if (resp == null) //{ // throw new CommTestScenarioException(); //} Thread.Sleep(waitTime); } } catch (Exception) { throw new CommTestScenarioException(); } return(new ScenarioResult(ScenarioResult.RunResult.Pass)); }
public override Task <RoutingResponse> EnqueueControlMessage(ControlMessage request, ServerCallContext context) { RoutingResponse response; using (this.m_duration.NewTimer()) { this.m_logger.LogDebug("Received egress routing request for sensor {sensorId}.", request.SensorID); try { var dto = ControlMessageProtobufConverter.Convert(request); this.m_requests.Inc(); this.m_queue.Add(dto); response = new RoutingResponse { Count = 1, Message = "Messages queued.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } catch (FormatException ex) { this.m_logger.LogWarning("Received messages from an invalid sensor. Exception: {exception}", ex); response = new RoutingResponse { Count = 0, Message = "Messages not queued. Invalid sensor ID.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } } return(Task.FromResult(response)); }
static TransportMessage CreateControlMessage(Type eventType) { var subscriptionMessage = ControlMessage.Create(Address.Local); subscriptionMessage.Headers[Headers.SubscriptionMessageType] = eventType.AssemblyQualifiedName; return(subscriptionMessage); }
private void WriteRecordingHeader(BinaryWriter writer) { // First write a server info message to define the coordinate frame and other server details. PacketBuffer packet = new PacketBuffer(); PacketHeader header = PacketHeader.Default; ControlMessage frameCountMsg = new ControlMessage(); header.RoutingID = (ushort)RoutingID.ServerInfo; packet.Reset(); packet.WriteHeader(header); _serverInfo.Write(packet); packet.FinalisePacket(); packet.ExportTo(writer); // Next write a placeholder control packet to define the total number of frames. header.RoutingID = (ushort)RoutingID.Control; header.MessageID = (ushort)ControlMessageID.FrameCount; header.PayloadSize = 0; header.PayloadOffset = 0; frameCountMsg.ControlFlags = 0; frameCountMsg.Value32 = 0; // Placeholder. Frame count is currently unknown. frameCountMsg.Value64 = 0; packet.Reset(); packet.WriteHeader(header); frameCountMsg.Write(packet); packet.FinalisePacket(); packet.ExportTo(writer); }
protected override void Stop() { if (_stopFlag == 1) { return; } _cancellation.Cancel(); Thread.MemoryBarrier(); ModuleUtils.StopThreadWork(_receiveThread); //如果两个队列在被锁的状态则释放锁 _engineMessageQueue.FreeBlocks(); _statusMessageQueue.FreeBlocks(); _callBackMessageQueue.FreeBlocks(); // 发送停止消息,该消息只是为了释放被Receive阻塞的线程,并不会真的被处理 ControlMessage stopMessage = new ControlMessage(MessageNames.CtrlAbort, CommonConst.BroadcastSession); UpLinkMessenger.Send(stopMessage); Thread.MemoryBarrier(); ModuleUtils.StopThreadWork(_engineMessageListener); ModuleUtils.StopThreadWork(_statusMessageListener); ModuleUtils.StopThreadWork(_callBackMessageListener); ModuleUtils.StopThreadWork(_receiveThread); ZombieCleaner.Stop(); UpLinkMessenger.Clear(); Thread.VolatileWrite(ref _stopFlag, 1); GlobalInfo.LogService.Print(LogLevel.Info, CommonConst.PlatformLogSession, "Message transceiver stopped."); }
public bool BrodcastMessageWithResult(ControlMessage message, MessageTypes wantedType) { bool succes = true; if (Adresses == null || Adresses.Count == 0) { throw new InvalidOperationException("Set Addresses list first!"); } if (!SenderID.HasValue) { throw new InvalidOperationException("Set SenderID first!"); } Adresses.ForEach(address => { using (ZSocket requester = new ZSocket(ZContextProvider.GlobalContext, ZSocketType.REQ)) { requester.Connect(address); requester.Send(new ZFrame(BinarySerializer <ControlMessage> .ToByteArray(message))); using (ZFrame reply = requester.ReceiveFrame()) { ControlMessage rcvedMsg = BinarySerializer <ControlMessage> .ToObject(reply.Read()); succes = succes && rcvedMsg.Type.Equals(wantedType); } } }); return(succes); }
private bool HandleControlMessage(ControlMessage message) { int session = message.Id; string name = message.Name; switch (name) { case MessageNames.CtrlAbort: bool abortSuccess = bool.Parse(message.Params["AbortSuccess"]); AbortEventInfo abortEventInfo = new AbortEventInfo(session, false, abortSuccess); if (!abortSuccess && message.Params.ContainsKey("Message")) { abortEventInfo.FailInfo = message.Params["Message"]; } _globalInfo.EventQueue.Enqueue(abortEventInfo); _testsMaintainer.FreeHost(session); // 如果所有的都已经结束,则修改状态机状态 if (0 == _testsMaintainer.TestContainers.Count) { _globalInfo.StateMachine.State = RuntimeState.Abort; } // 同步释放,每个Session的停止都是同步执行的。 _blockHandle.Free(Constants.AbortState); break; default: throw new InvalidOperationException(); } return(true); }
public static Measurement Convert(ControlMessage message) { var builder = new MeasurementBuilder(); var token = JToken.Parse(message.Data); if (token["latitude"] != null && token["longitude"] != null) { var lat = token["latitude"].ToObject <double>(); var lon = token["longitude"].ToObject <double>(); builder.WithCoordinates(lon, lat); } if (token["telegram"] == null) { throw new InvalidOperationException("Unable to parse telegram without a telegram."); } builder.WithTimestamp(token["timestamp"].ToObject <DateTime>()); builder.WithSensorId(message.SensorId); var base64 = token["telegram"].ToString(); var bytes = System.Convert.FromBase64String(base64); var tmp = Encoding.UTF8.GetString(bytes); tmp = tmp.Replace(Needle, ""); var data = JToken.Parse(tmp); builder.WithDataPoint("pressure", "Pa", data["p"].ToObject <decimal>(), 0.1); builder.WithDataPoint("temperature", "C", data["t"].ToObject <decimal>(), 0.1); builder.WithDataPoint("rh", "%", data["rh"].ToObject <decimal>(), 0.00001); return(builder.Build()); }
public void Abort(int sessionId) { this._globalInfo.StateMachine.State = RuntimeState.AbortRequested; if (sessionId == CommonConst.TestGroupSession || sessionId == CommonConst.BroadcastSession) { foreach (int session in _testsMaintainer.TestContainers.Keys) { Abort(session); } } else { ControlMessage abortMessage = new ControlMessage(MessageNames.CtrlAbort, CommonConst.BroadcastSession); abortMessage.AddParam("IsRequest", true.ToString()); abortMessage.Id = sessionId; _globalInfo.MessageTransceiver.Send(abortMessage); AbortEventInfo abortEventInfo = new AbortEventInfo(sessionId, true, false); _globalInfo.EventQueue.Enqueue(abortEventInfo); // 目前使用同步Abort,每次只能释放一个 _blockHandle.Timeout = _globalInfo.ConfigData.GetProperty <int>("AbortTimeout"); _blockHandle.Wait(Constants.AbortState); } }
public static TextTelegram Convert(ControlMessage message) { var telegram = new TextTelegram(); var token = JToken.Parse(message.Data); if (token["latitude"] != null && token["longitude"] != null) { telegram.Latitude = token["latitude"].ToObject <double>(); telegram.Longitude = token["longitude"].ToObject <double>(); } else { telegram.Longitude = telegram.Latitude = 0D; } if (token["telegram"] == null) { throw new InvalidOperationException("Unable to parse telegram without a telegram."); } telegram.Timestamp = token["timestamp"].ToObject <DateTime>(); var base64 = token["telegram"].ToString(); var bytes = System.Convert.FromBase64String(base64); telegram.Telegram = Encoding.UTF8.GetString(bytes); return(telegram); }
public static void RunService(string listeningAddress, int processesAmount) { using (ZSocket responser = new ZSocket(ZContextProvider.GlobalContext, ZSocketType.REP)) { responser.Bind(listeningAddress); for (int i = 1; i < processesAmount + 1; i++) { ZFrame frame = responser.ReceiveFrame(); ControlMessage message = BinarySerializer <ControlMessage> .ToObject(frame.Read()); int idToResponse = i; MessageTypes responseType = MessageTypes.IDSet; if (message.Type != MessageTypes.IDRequest) { idToResponse = -1; responseType = MessageTypes.Reset; i--; } ZFrame responseFrame = MessageFactory.CreateMessageZFrame(0, -1, -1, idToResponse, responseType); responser.Send(responseFrame); } } }
/// <summary> /// Send a control message to the server to say that the client has ended /// </summary> private static void NotifyClientEnded() { if (clientSocket != null) { ControlMessage msg = new ControlMessage(ControlType.NotificationOfEnd); SendMessage(msg); } }
/// <summary> /// Sends a ControlMessage to NGRID server. /// </summary> /// <param name="message">Message to send</param> public void SendMessage(ControlMessage message) { SendMessageInternal(new NGRIDControllerMessage { MessageData = NGRIDSerializationHelper.SerializeToByteArray(message), ControllerMessageTypeId = message.MessageTypeId }); }
public static void Pardon(string username) { ControlMessage cm = new ControlMessage(); cm.Pardon = new Pardon(); cm.Pardon.Username = username; Send(cm); }
//用于控件发送消息 public void PostMessage(ControlMessage.Message msg, object p0 = null, object p1 = null) { if (null != Root) { ControlMessage newMsg = new ControlMessage(this, msg, p0, p1); Root.EnqueueMessage(newMsg); } }
public void SignControlMessage(ControlMessage message, string json) { using var sha = SHA256.Create(); var binary = Encoding.ASCII.GetBytes(json); var hash = sha.ComputeHash(binary); message.Secret = BytesToHex(hash, false); }
public void ClearDeferredMessages(string headerKey, string headerValue) { var controlMessage = ControlMessage.Create(Address.Local); controlMessage.Headers[headerKey] = headerValue; controlMessage.Headers[TimeoutManagerHeaders.ClearTimeouts] = Boolean.TrueString; MessageSender.Send(controlMessage, TimeoutManagerAddress); }
public static void Kick(MineProxy.Control.Player player, string reason) { ControlMessage cm = new ControlMessage(); cm.Kick = new Kick(); cm.Kick.Username = player.Username; cm.Kick.Reason = reason; Send(cm); }
public void LaunchInviteWindow(ControlMessage msg) { InviteWindow inviteWin = new InviteWindow(msg.Sender, msg.ChatName, msg.Chat, msg.ID); this.BeginInvoke((MethodInvoker) delegate() { inviteWin.BringToFront(); inviteWin.Show(); }); }
private byte[] GetByteArrayForControlMessage(ControlMessage controlMessage) { using (MemoryStream memoryStream = new MemoryStream()) using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream)) { controlMessage.Serialize(binaryWriter); return(((MemoryStream)binaryWriter.BaseStream).ToArray()); } }
private void SendUserUpdateMessage(WebMeeting.Common.ClientProfile clientUpdated) { ControlMessage m = new ControlMessage(ControlCode.AttendeeUpdate); m.Parameter = clientUpdated; ((IMessageReceiver) this._dispatcher.TransparentProxy).ReceiveMessage(m); m = null; //GC GC.Collect(); //GC }
/// <summary> /// Send a control message to all the attendees in the conference /// </summary> /// <param name="ctrlCode"> Control code identifying this message </param> /// <param name="param"> Any extra info needed by the clients </param> public void BroadcastControlMessage(ControlCode ctrlCode, Object param) { try { ControlMessage ctrlMsg; // // Construct a control message // ctrlMsg = new ControlMessage(ctrlCode); ctrlMsg.Parameter = param; ctrlMsg.SenderID=-1; // // Send the message to all the clients in the conference // ((IMessageReceiver) this._dispatcher.TransparentProxy).ReceiveMessage(ctrlMsg); ctrlMsg = null; //GC GC.Collect(); //GC } catch(Exception e) { Console.WriteLine(e.Message); } }
private void comboMood_SelectedIndexChanged(object sender, EventArgs e) { try { int nIndex = 12; if(comboMood.SelectedIndex == 0) nIndex = 10; else if(comboMood.SelectedIndex == 1) nIndex = 11; else if(comboMood.SelectedIndex == 2) nIndex = 12; else if(comboMood.SelectedIndex == 3) nIndex = 13; else if(comboMood.SelectedIndex == 4) nIndex = 14; NetworkManager.getInstance().profile.m_MoodIndicatorColor =(MoodIndicator) nIndex; ControlMessage m = new ControlMessage(ControlCode.AttendeeUpdate); m.SenderID = -1;//network.profile.ClientId; m.Parameter = NetworkManager.getInstance().profile; NetworkManager.getInstance().SendLoadPacket(m); //Trace.WriteLine("line 371 dotnetstatusbar message of attendee update"); NetworkManager.getInstance().myRecvMsgList.Add(m); } catch(Exception ex) { Trace.WriteLine("Exception at the place of status bar comboMood_SelectedIndexChanged :"+ex.ToString()); ex=ex; } }
public static bool ValidateRunAs(ProjectionMode mode, ReadWrite readWrite, IPrincipal existingRunAs, ControlMessage message, bool replace = false) { if (mode > ProjectionMode.Transient && readWrite == ReadWrite.Write && (message.RunAs == null || message.RunAs.Principal == null || !message.RunAs.Principal.IsInRole(SystemRoles.Admins))) { message.Envelope.ReplyWith(new NotAuthorized()); return false; } if (replace && message.RunAs.Principal == null) { message.Envelope.ReplyWith(new NotAuthorized()); return false; } if (replace && message.RunAs.Principal != null) return true; // enable this operation while no projection permissions are defined return true; //if (existingRunAs == null) // return true; //if (message.RunAs.Principal == null // || !string.Equals( // existingRunAs.Identity.Name, message.RunAs.Principal.Identity.Name, // StringComparison.OrdinalIgnoreCase)) //{ // message.Envelope.ReplyWith(new NotAuthorized()); // return false; //} //return true; }
/// <summary> /// Send User joining message to all participant in the meeting /// This method is called from AttachClient. /// </summary> /// <param name="newlyJoined">profile of new comming participant</param> public void SendUserJoinMessage(WebMeeting.Common.ClientProfile newlyJoined) { ControlMessage m = new ControlMessage(ControlCode.AttendeeJoin); m.SenderID =-1; m.Parameter= newlyJoined; ((IMessageReceiver) this._dispatcher.TransparentProxy).ReceiveMessage(m); m = null; //GC GC.Collect(); //GC }