public IPCDispatchResult Dispatch(IIPCMessage message) { string receaverUri = new IPCUri(_receaverID, IPCBaseMessagesQueue.URISuffix).Value; _receaverQueue = (IPCBaseMessagesQueue)Activator.GetObject(typeof(IPCBaseMessagesQueue), receaverUri); // check if message is valid if (message == null || !message.IsValid) { return IPCDispatchResult.InvalidMessageClass; } try { if (RemotingServices.IsTransparentProxy(_receaverQueue)) { switch (message.MessageType) { case IPCDispatchType.Async: return DoDispatchAsyncMessage(message as IPCBaseAsyncMessage, _receaverQueue); case IPCDispatchType.Sync: return DoDispatchSyncMessage(message as IPCBaseSyncMessage, _receaverQueue); default: break; } } } catch (Exception ex) { if (ex is RemotingException) { return IPCDispatchResult.ReceaverNotExists; } if (ex is SerializationException) { return IPCDispatchResult.InvalidMessageClass; } return IPCDispatchResult.UnexpectedFail; } return IPCDispatchResult.Success; }
private void ListenQueue() { while (true) { IIPCMessage message = null; lock (_locker) { if (_currentQueue.Count() > 0) { message = _currentQueue.DequeueMessage(); } } if (message != null) { if (message.MessageType == IPCDispatchType.Sync) { using (EventWaitHandle _dispatcherWaitHandle = new EventWaitHandle(false, EventResetMode.AutoReset, message.DispatherID.Value)) { OnReceaveIPCMessage(this, new ReceaveMessageEventArgs(message)); _dispatcherWaitHandle.Set(); }; } else { OnReceaveIPCMessage(this, new ReceaveMessageEventArgs(message)); } } else { _currentWaitHandle.WaitOne(); } } }
private static void ForwardResponce(IIPCMessage message, IIPCGUID receaver) { using (BaseIPCDispatcher dispatcher = new BaseIPCDispatcher(receaver)) { if (dispatcher.Dispatch(message) == IPCDispatchResult.Success) Console.WriteLine("Message has been forwarded succesfully!"); else Console.WriteLine("Unable to forward message"); } }
private static void ForwardResponce(IIPCMessage message, IIPCGUID receaver) { using (BaseIPCDispatcher dispatcher = new BaseIPCDispatcher(receaver)) { if (dispatcher.Dispatch(message) == IPCDispatchResult.Success) { Console.WriteLine("Message has been forwarded succesfully!"); } else { Console.WriteLine("Unable to forward message"); } } }
public IIPCMessage DequeueMessage() { IIPCMessage tmpResult = tasks.Dequeue(); if (tmpResult is IPCSyncHelperMessage) { IPCSyncHelperMessage messageHelper = tmpResult as IPCSyncHelperMessage; IIPCMessage realMessage = (IIPCMessage)Activator.GetObject(messageHelper.OwnerType, messageHelper.OwnerFullUri); return(realMessage); } else { return(tmpResult); } }
public IPCDispatchResult Dispatch(IIPCMessage message) { string receaverUri = new IPCUri(_receaverID, IPCBaseMessagesQueue.URISuffix).Value; _receaverQueue = (IPCBaseMessagesQueue)Activator.GetObject(typeof(IPCBaseMessagesQueue), receaverUri); // check if message is valid if (message == null || !message.IsValid) { return(IPCDispatchResult.InvalidMessageClass); } try { if (RemotingServices.IsTransparentProxy(_receaverQueue)) { switch (message.MessageType) { case IPCDispatchType.Async: return(DoDispatchAsyncMessage(message as IPCBaseAsyncMessage, _receaverQueue)); case IPCDispatchType.Sync: return(DoDispatchSyncMessage(message as IPCBaseSyncMessage, _receaverQueue)); default: break; } } } catch (Exception ex) { if (ex is RemotingException) { return(IPCDispatchResult.ReceaverNotExists); } if (ex is SerializationException) { return(IPCDispatchResult.InvalidMessageClass); } return(IPCDispatchResult.UnexpectedFail); } return(IPCDispatchResult.Success); }
public void EnqueueMessage(IIPCMessage message) { tasks.Enqueue(message); }
public ReceaveMessageEventArgs(IIPCMessage message) { _message = message; }