Exemple #1
0
        static void Main(string[] args)
        {
            var serverHostName     = "";
            var serverPortNumber   = 0;
            var collectionInterval = 1000;
            var zmiName            = "";

            Parser.Default.ParseArguments <Options>(args)
            .WithParsed(opts =>
            {
                serverHostName   = opts.ServerHostName;
                serverPortNumber = opts.ServerPortNumber;
                zmiName          = opts.ZmiName;

                _contactsFilename = opts.ContactsFileName;

                using var file   = File.OpenRead(opts.IniFileName);
                using var stream = new StreamReader(file);
                if (!INIParser.ParseIni(stream).TryGetValue("collectionInterval", out var value) ||
                    !int.TryParse(value, out collectionInterval))
                {
                    Console.WriteLine($"COULDN'T FIND COLLECTION INTERVAL IN {opts.IniFileName} file");
                    Environment.Exit(1);
                }
            })
            .WithNotParsed(errs =>
            {
                foreach (var err in errs)
                {
                    Console.WriteLine($"OPTIONS PARSE ERROR: {err}");
                }
                Environment.Exit(1);
            });

            var cts = new CancellationTokenSource();

            Console.WriteLine("Fetcher running. Press Enter to stop it...");
            var t = RunAsync(serverHostName, serverPortNumber, FileName, collectionInterval, zmiName, cts.Token);

            Console.ReadLine();

            cts.Cancel();
            try
            {
                t.Wait();
            }
            catch (AggregateException)
            {
                // it is foreseen
            }
            catch (Exception e)
            {
                Console.WriteLine($"Exception: {e}");
            }
            finally
            {
                File.Delete(FileName);
            }
        }
Exemple #2
0
        public static void Main(string[] args)
        {
            var zmiName      = string.Empty;
            ZMI fatherZmi    = null;
            RSA rsa          = null;
            var receiverHost = string.Empty;
            var receiverPort = 0;
            var rpcHost      = string.Empty;
            var rpcPort      = 0;

            IDictionary <string, string> configuration = new Dictionary <string, string>();

            Parser.Default.ParseArguments <Options>(args)
            .WithParsed(opts =>
            {
                zmiName = opts.ZmiName.Trim(' ');
                if (string.IsNullOrEmpty(opts.ConfigFile) || !TryParseConfig(opts.ConfigFile, out fatherZmi))
                {
                    fatherZmi = ZMI.FromPathName(zmiName);
                }

                receiverHost = opts.ReceiverHost;
                receiverPort = opts.ReceiverPort;
                rpcHost      = opts.RpcHost;
                rpcPort      = opts.RpcPort;

                rsa = RSAFactory.FromPublicKey(opts.PublicKeyPath);

                if (string.IsNullOrEmpty(opts.IniFileName))
                {
                    return;
                }

                using var file   = File.OpenRead(opts.IniFileName);
                using var stream = new StreamReader(file);
                configuration    = INIParser.ParseIni(stream);
            })
            .WithNotParsed(errs =>
            {
                foreach (var err in errs)
                {
                    Console.WriteLine($"OPTIONS PARSE ERROR: {err}");
                }
                Environment.Exit(1);
            });

            var creationTimestamp = new ValueTime(DateTimeOffset.Now);

            fatherZmi.ApplyForEach(zmi => zmi.Attributes.AddOrChange("update", creationTimestamp));
            if (!fatherZmi.TrySearch(zmiName, out var myZmi))
            {
                Console.WriteLine($"Could not find node {zmiName} in ZMIs");
                Environment.Exit(1);
            }
            myZmi.Attributes.AddOrChange("timestamp", creationTimestamp);
            myZmi.Attributes.AddOrChange("contacts",
                                         new ValueSet(
                                             new HashSet <Value>(new[]
                                                                 { new ValueContact(myZmi.PathName, IPAddress.Parse(receiverHost), receiverPort) }),
                                             AttributeTypePrimitive.Contact));
            myZmi.Attributes.AddOrChange("isSingleton", new ValueBoolean(true));

            var manager = ManagerFromIni(receiverHost, receiverPort, rpcHost, rpcPort, configuration, rsa, myZmi);

            Console.WriteLine("Press ENTER to exit...");
            Console.ReadLine();
            Console.WriteLine("End");
            manager.Dispose();
        }