public static void Main() { #region Speed Test Arbiter a = new Arbiter("Arbiter"); ManualTransportClient d1 = new ManualTransportClient("d1"); a.AddClient(d1); ManualTransportClient d2 = new ManualTransportClient("d1"); a.AddClient(d2); DateTime start = DateTime.Now; // The current speed is around 3.200 messages / sec; the workload is on the serialization. for (int i = 0; i < 100; i++) { OperationMessage om = new OperationMessage(); d1.SendAddressed(d2.SubscriptionClientID, om); } Console.WriteLine(DateTime.Now - start); #endregion Console.ReadKey(); }
public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); // Make sure to add sources as soon as possible, since there might be some requests coming in for them. InitializeSources(); return result; }
public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); // Make sure to add sources as soon as possible, since there might be some requests coming in for them. InitializeSources(); return(result); }
/// <summary> /// Name of the platform must be unique. /// </summary> public Platform(string name) : base(name, false) { TracerHelper.TraceEntry(); Arbiter.Arbiter arbiter = new Arbiter.Arbiter("Platform"); //TracerHelper.TracingEnabled = false; arbiter.AddClient(this); }
/// <summary> /// /// </summary> public ExecutionManager(Arbiter arbiter) { _arbiter = arbiter; _threadPool = new ThreadPoolEx(typeof(ExecutionManager).Name); _threadPool.MaximumSimultaniouslyRunningThreadsAllowed = 20; _threadPool.MaximumTotalThreadsAllowed = 25; _timeOutMonitor.EntityTimedOutEvent += new HandlerDelegate<TimeOutable>(_timeOutMonitor_EntityTimedOutEvent); }
/// <summary> /// Name of the platform must be unique. /// </summary> public Platform(string name) : base(name, false) { TracerHelper.TraceEntry(); Arbiter.Arbiter arbiter = new Arbiter.Arbiter("Platform"); //TracerHelper.TracingEnabled = false; arbiter.AddClient(this); }
/// <summary> /// /// </summary> public ExecutionManager(Arbiter arbiter) { _arbiter = arbiter; _threadPool = new ThreadPoolFastEx(typeof(ExecutionManager).Name); //_threadPool.MaximumSimultaniouslyRunningThreadsAllowed = 20; // Clear them promptly, since otherwise we seem to get stuck. _threadPool.ThreadIdle = TimeSpan.FromSeconds(1); _threadPool.MaximumThreadsCount = 25; _timeOutMonitor.EntityTimedOutEvent += new HandlerDelegate<TimeOutable>(_timeOutMonitor_EntityTimedOutEvent); }
/// <summary> /// /// </summary> public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { if (base.ArbiterInitialize(arbiter) == false) { return false; } //ChangeOperationalState(OperationalStateEnum.Operational); RegisterSourceMessage register = new RegisterSourceMessage(_sourceType, true); register.RequestResponce = false; this.Send(register); return true; }
/// <summary> /// /// </summary> public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { if (base.ArbiterInitialize(arbiter) == false) { return(false); } //ChangeOperationalState(OperationalStateEnum.Operational); RegisterSourceMessage register = new RegisterSourceMessage(_sourceType, true); register.RequestResponce = false; this.Send(register); return(true); }
public static void Main(string[] args) { if (args.Length > 0) { WorkingDirectory = args[0]; } foreach (var a in args) { Console.WriteLine(a); } if (string.IsNullOrEmpty(WorkingDirectory)) { WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "WorkingDirectory"); Logger.Initialization(); Logger.Warning($"Не указана рабочая директория, программа будет работать в директории {WorkingDirectory}"); } else { Logger.Initialization(); } Logger.Log("Арбитр запущен"); Console.CancelKeyPress += Console_CancelKeyPress; Arbiter arbiter = new Arbiter(); while (!IsCancelled) { try { arbiter.Update(); if (arbiter.sleep) { Thread.Sleep(1000); } } catch (Exception ex) { Logger.Error($"Message: {ex.Message}\nStackTrace: {ex.StackTrace}"); } } }
public override bool ArbiterInitialize(Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); _transportServer = new MessageContainerTransportServer(); if (_transportServer.Initialize(_serverUriBase) == false) { base.ArbiterUnInitialize(); _transportServer = null; return false; } _transportServer.MessageContainerReceivedEvent += new HandlerDelegate<String, MessageContainer>(_transport_MessageReceivedEvent); _transportServer.ClientConnected += new HandlerDelegate<string>(_transportServer_ClientConnected); _transportServer.ClientDisConnected += new HandlerDelegate<string>(_transportServer_ClientDisconnected); return result; }
public override bool ArbiterInitialize(Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); _transportServer = new MessageContainerTransportServer(); if (_transportServer.Initialize(_serverUriBase) == false) { base.ArbiterUnInitialize(); _transportServer = null; return(false); } _transportServer.MessageContainerReceivedEvent += new HandlerDelegate <String, MessageContainer>(_transport_MessageReceivedEvent); _transportServer.ClientConnected += new HandlerDelegate <string>(_transportServer_ClientConnected); _transportServer.ClientDisConnected += new HandlerDelegate <string>(_transportServer_ClientDisconnected); return(result); }
public override bool ArbiterInitialize(Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); lock (this) { if (_transportClient != null) { throw new Exception("Already initialized."); } _transportClient = new MessageContainerTransportClient(); _transportClient.ConnectionStatusChangedEvent += new MessageContainerTransportClient.ConnectionStatusChangedDelegate(_transportClient_ConnectionStatusChangedEvent); _transportClient.MessageContainerReceivedEvent += new HandlerDelegate<MessageContainer>(_transport_MessageReceivedEvent); } _transportClient.Initialize(_serverAddressUri); return result; }
public override bool ArbiterInitialize(Arbiter arbiter) { bool result = base.ArbiterInitialize(arbiter); lock (this) { if (_transportClient != null) { throw new Exception("Already initialized."); } _transportClient = new MessageContainerTransportClient(); _transportClient.ConnectionStatusChangedEvent += new MessageContainerTransportClient.ConnectionStatusChangedDelegate(_transportClient_ConnectionStatusChangedEvent); _transportClient.MessageContainerReceivedEvent += new HandlerDelegate <MessageContainer>(_transport_MessageReceivedEvent); } _transportClient.Initialize(_serverAddressUri); return(result); }
public void Dispose() { _isDisposed = true; ThreadPoolFastEx threadPool = _threadPool; if (threadPool != null) { threadPool.Dispose(); _threadPool = null; } Arbiter arbiter = _arbiter; if (arbiter != null) { arbiter.ClientAddedEvent -= new ClientManagerClientUpdateDelegate(arbiter_ClientAddedEvent); arbiter.ClientRemovedEvent -= new ClientManagerClientUpdateDelegate(arbiter_ClientRemovedEvent); _arbiter = null; } }
/// <summary> /// /// </summary> public ProxyIntegrationAdapter(Uri serverIntegrationUri) : base(typeof(ProxyIntegrationAdapter).Name, false) { TracerHelper.Tracer.Clear(true); // Locate the trace file, next to the MT4IntegrationDLL, that is deployed inside the // corresponding MT4 expert/libraries folder. FileTracerItemSink sink = new FileTracerItemSink(TracerHelper.Tracer); sink.FilePath = Path.Combine(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Experts"), "OFxP.Expert." + GeneralHelper.GetFileCompatibleDateTime(DateTime.Now) + ".log"); TracerHelper.Tracer.Add(sink); TracerHelper.TraceEntry(); // This. Filter.Enabled = true; Filter.AllowOnlyAddressedMessages = false; Filter.AllowChildrenTypes = true; Filter.AllowedNonAddressedMessageTypes.Add(typeof(TransportMessage)); Arbiter.Arbiter arbiter = new Arbiter.Arbiter("IntegrationServer.Arbiter"); arbiter.AddClient(this); // Integration server. _integrationServer = new TransportIntegrationServer(serverIntegrationUri); if (arbiter.AddClient(_integrationServer) == false) {// Failed to add/initialize integration server. _integrationServer = null; MessageBox.Show("Failed to initialize OFxP Integration Server." + System.Environment.NewLine + "Possibly another integration with the same address [" + serverIntegrationUri.ToString() + "] already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ChangeOperationalState(OperationalStateEnum.Operational); }
/// <summary> /// /// </summary> public ProxyIntegrationAdapter(Uri serverIntegrationUri) : base(typeof(ProxyIntegrationAdapter).Name, false) { TracerHelper.Tracer.Clear(true); // Locate the trace file, next to the MT4IntegrationDLL, that is deployed inside the // corresponding MT4 expert/libraries folder. FileTracerItemSink sink = new FileTracerItemSink(TracerHelper.Tracer); sink.FilePath = Path.Combine(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Experts"), "OFxP.Expert." + GeneralHelper.GetFileCompatibleDateTime(DateTime.Now) + ".log"); TracerHelper.Tracer.Add(sink); TracerHelper.TraceEntry(); // This. Filter.Enabled = true; Filter.AllowOnlyAddressedMessages = false; Filter.AllowChildrenTypes = true; Filter.AllowedNonAddressedMessageTypes.Add(typeof(TransportMessage)); Arbiter.Arbiter arbiter = new Arbiter.Arbiter("IntegrationServer.Arbiter"); arbiter.AddClient(this); // Integration server. _integrationServer = new TransportIntegrationServer(serverIntegrationUri); if (arbiter.AddClient(_integrationServer) == false) {// Failed to add/initialize integration server. _integrationServer = null; MessageBox.Show("Failed to initialize OFxP Integration Server." + System.Environment.NewLine + "Possibly another integration with the same address [" + serverIntegrationUri.ToString() + "] already running.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ChangeOperationalState(OperationalStateEnum.Operational); }
/// <summary> /// Central sending function. /// </summary> /// <param name="receiverID">The ID of the receiver module. Can be <b>null</b> and this sends to all in the Arbiter.</param> protected TransportMessage[] DoSendCustom(bool isRequest, Guid sessionGuid, Type expectedResponseMessageClassType, int responsesRequired, ArbiterClientId?receiverId, ArbiterClientId?senderId, TransportMessage message, TimeSpan timeOut) { //TracerHelper.TraceEntry(); SessionResults session = null; if (receiverId.HasValue && receiverId.Value.IsEmpty /*receiverId.Value.CompareTo(ArbiterClientId.Empty) == 0*/) { SystemMonitor.Error("Can not send an item to empty receiver. Use null to specify broadcast."); return(null); } // Preliminary verification. if (Arbiter == null) { SystemMonitor.OperationWarning("Using a client [" + this.GetType().Name + ":" + senderId.Value.ClientName + " to " + (receiverId.HasValue ? receiverId.Value.Id.Name : string.Empty) + " , " + message.GetType().Name + "] with no Arbiter assigned."); return(null); } message.IsRequest = isRequest; TransportInfoUnit infoUnit = new TransportInfoUnit(sessionGuid, senderId, receiverId); message.TransportInfo.AddTransportInfoUnit(infoUnit); bool sessionEventResult = false; if (expectedResponseMessageClassType != null) {// Responce waiting session. session = new SessionResults(responsesRequired, expectedResponseMessageClassType); lock (_communicationSessions) {// Register the session. _communicationSessions.Add(sessionGuid, session); } } SystemMonitor.CheckError(message.TransportInfo.CurrentTransportInfo != null); Conversation conversation; if (receiverId == null) { // We shall not use the next level time out mechanism. conversation = Arbiter.CreateConversation(senderId.Value, message, TimeSpan.Zero); } else {// Addressed conversation. // We shall not use the next level time out mechanism. conversation = Arbiter.CreateConversation(senderId.Value, receiverId.Value, message, TimeSpan.Zero); } if (conversation != null && expectedResponseMessageClassType != null) { // Responce waiting session (only if conversation was properly created). if (timeOut == TimeSpan.Zero) { // Wait forever. sessionEventResult = session.SessionEndEvent.WaitOne(); } else {// Wait given period. sessionEventResult = session.SessionEndEvent.WaitOne(timeOut, false); } lock (_communicationSessions) {// Remote the session. _communicationSessions.Remove(sessionGuid); } } message.TransportInfo.PopTransportInfo(); if (expectedResponseMessageClassType == null) {// No responce waiting, just return. //TracerHelper.TraceExit(); return(null); } // Responce waiting session. if (sessionEventResult == false) {// Timed out - only send and receives can time out, as the other ones do not have sessions!! TracerHelper.TraceError("Session has timed out [" + message.GetType().Name + "]."); return(null); } //TracerHelper.TraceExit(); return(session.Responses.ToArray()); }
public override bool ArbiterInitialize(Arbiter arbiter) { if (base.ArbiterInitialize(arbiter)) { if (_persistedRemoteStatusSynchronizationSource != null) { SetRemoteStatusSynchronizationSource(_persistedRemoteStatusSynchronizationSource); } return true; } return false; }
/// <summary> /// /// </summary> public virtual bool ArbiterInitialize(Arbiter arbiter) { lock (this) { if (_arbiter != null) { SystemMonitor.Error("Arbiter value initialized more than once in a client."); } _arbiter = arbiter; } return true; }
/// <summary> /// Override to handle an uninitializations needed. /// </summary> public virtual bool ArbiterUnInitialize() { lock (this) { _arbiter = null; } return true; }
static void Main(string[] args) { if(args.Length!=1) { Console.WriteLine("Please set a config file!"); return; } //CancelEvent verdrahten Console.CancelKeyPress+=new ConsoleCancelEventHandler(Console_CancelKeyPress); //Highscore Pfad bauen string highscorePath=FileSystem.GetPath(args[0])+"highscore.xml"; //Config auslesen XmlData Options=new XmlData(args[0]); string username=Options.GetElementAsString("xml.IRC.UserName"); string realname=Options.GetElementAsString("xml.IRC.RealName"); string ident=Options.GetElementAsString("xml.IRC.Ident"); string server=Options.GetElementAsString("xml.IRC.Server"); string channel=Options.GetElementAsString("xml.IRC.Channel"); string userpassword=Options.GetElementAsString("xml.IRC.Password"); //Bot anlegen Arbiter arbiter=new Arbiter(server, username, realname, ident, channel, highscorePath); //Jokes einlesen List<XmlNode> jokeNodes=Options.GetElements("xml.Jokes.Joke"); foreach(XmlNode jokeNode in jokeNodes) { string category=jokeNode.Attributes["category"]!=null?jokeNode.Attributes["category"].Value:""; string jokeText=jokeNode.InnerText; arbiter.Jokes.Add(new Joke(category, jokeText)); } //Quizfragen einlesen List<XmlNode> questionsNodes=Options.GetElements("xml.Quiz.Question"); foreach(XmlNode questionNode in questionsNodes) { string category=questionNode.Attributes["category"].Value; string question=questionNode.Attributes["question"].Value; string success=questionNode.Attributes["success"]!=null?questionNode.Attributes["success"].Value:""; int points=Convert.ToInt32(questionNode.Attributes["points"].Value); List<string> hints=new List<string>(); int keywordWeight=1; if(questionNode.Attributes.GetNamedItem("keywordWeight")!=null) { keywordWeight=Convert.ToInt32(questionNode.Attributes["keywordWeight"].Value); } List<Keyword> keywords=new List<Keyword>(); foreach(XmlNode child in questionNode.ChildNodes) { if(child.Name=="Keyword") { int weight=1; if(child.Attributes.GetNamedItem("keywordWeight")!=null) { string weightValue=child.Attributes["keywordWeight"].Value; if(weightValue=="MAX") weight=Int32.MaxValue; else weight=Convert.ToInt32(weightValue); } Keyword keyword=new Keyword(child.InnerText, weight); keywords.Add(keyword); } else if(child.Name=="Hint") { hints.Add(child.InnerText); } } //Frage zum Bot hinzufügen arbiter.Quiz.Questions.Add(new Question(category, question, hints, success, points, keywordWeight, keywords)); } //Quotes einlesen List<XmlNode> quodeNodes=Options.GetElements("xml.Quotes.Quote"); foreach(XmlNode quodeNode in quodeNodes) { string author=quodeNode.Attributes["author"].Value; string quoteText=quodeNode.InnerText; arbiter.Quotes.Add(new Quote(author, quoteText)); } //Bot starten arbiter.Start(userpassword); }
public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { return base.ArbiterInitialize(arbiter); }
public override bool ArbiterInitialize(Arbiter.Arbiter arbiter) { return(base.ArbiterInitialize(arbiter)); }