/* * конфигурация команд клиента */ private static CommandArray <ClientData> ConfigureCommands() { CommandArray <ClientData> res = new CommandArray <ClientData>(); res.AddCommand((c) => { ICommand cmd = new CommandStress(); c.Name = "stress"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); res.AddCommand((c) => { ICommand cmd = new CommandLoad(); c.Name = "load"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); res.AddCommand((c) => { ICommand cmd = new CommandPerformance(); c.Name = "performance"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); return(res); }
public override void Communicate(GEIIO.Communicate.IRequestInfo info) { string hexs = BinaryUtil.ByteToHex(info.Data); OnDeviceRuningLog("接收>>" + hexs); byte[] cmds = this.Protocol.GetCommand(info.Data); CommandArray cr = (CommandArray)cmds[0]; dynamic obj = this.Protocol.DriverAnalysis <byte[]>(cr.ToString(), info.Data, info.BigData); if (obj != null) { if (cr == CommandArray.RealTimeData) { _deviceDyn.Dyn = (Dyn)obj; OnDeviceRuningLog("通讯正常"); if (this.DeviceParameter.DeviceCode != "1") { Console.WriteLine(">>>>模拟控制命令开始"); this.OnDeviceConnector( new FromDevice(this.DeviceParameter.DeviceID, this.DeviceParameter.DeviceCode, this.DeviceParameter.DeviceAddr, this.DeviceParameter.DeviceName), new DeviceToDevice("1", this.DeviceParameter.DeviceName + "问:大哥,朴大妈为什么还不下课?", null, null)); } } else if (cr == CommandArray.FileData) { OnDeviceRuningLog("文件存储路径:" + obj.ToString()); } } }
public override void Communicate(ServerSuperIO.Communicate.IResponseInfo info) { string hexs = BinaryUtil.ByteToHex(info.Data); OnDeviceRuningLog("接收>>" + hexs); byte[] cmds = this.Protocol.GetCommand(info.Data); CommandArray cr = (CommandArray)cmds[0]; dynamic obj = this.Protocol.DriverAnalysis <byte[]>(cr.ToString(), info.Data, info.BigData); if (obj != null) { if (cr == CommandArray.RealTimeData) { Dyn dyn = (Dyn)obj; this.DeviceDynamic.DynamicData.Write("flow", dyn.Flow); this.DeviceDynamic.DynamicData.Write("signal", dyn.Signal); OnDeviceRuningLog("通讯正常,流量:" + dyn.Flow + ",信号:" + dyn.Signal); } else if (cr == CommandArray.FileData) { OnDeviceRuningLog("文件存储路径:" + obj.ToString()); } //else if (cr == CommandArray.BackControlCommand) //{ // if (_serviceCallback != null) // { // _serviceCallback.BeginInvoke(new string[] { this.DeviceParameter.DeviceCode, _channelKey }, null, null); // } //} } }
public static void Main(string[] args) { config = JSONParser.ReadConfig(CONFIG_PATH); //чтение файла конфигурации с диска hardwareID = Hardware.GetID(); //идентификатор оборудования строися на основе mac адресов information = new PartStruct() //информация о клиенте отсылается серверу .Add("name", config["name"]) .Add("groupe", config["group"]) .Add("id", hardwareID) .Add("port", config["serverPort"]); receiver = ConfigureReceiver(); commands = ConfigureCommands(); rRServer = ConfigureServer(); Console.ReadKey(); //освобождение ресурсов и завершение программы receiver.Dispose(); rRServer.Dispose(); }
/* * создание управляющих сервером команд */ private static void ConfigureCommands() { commands = new CommandArray <ClientData>(); commands.AddCommand((c) => { //добавляет клиента и записывает как его найти IServerCommand cmd = new CommandAddClient(dataHolder); c.Name = "AddClient"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); commands.AddCommand((c) => { //фильтрует клиентов по имени и группе IServerCommand cmd = new CommandClients(dataHolder); c.Name = "clients"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); commands.AddCommand((c) => { //проводит стресс тестирование IServerCommand cmd = new CommandStressTest(dataHolder); c.Name = "stress"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); commands.AddCommand((c) => {//проводит нагрузочное тестирование IServerCommand cmd = new CommandLoadTest(dataHolder); c.Name = "load"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); commands.AddCommand((c) => {//проводит тестирование производительности IServerCommand cmd = new CommandPerformance(dataHolder); c.Name = "performance"; c.Execute = (ClientData[] arguments) => { cmd.Execute(arguments[0]); }; }); }
static void Main(string[] args) { config = readConfig(CONFIG_PATH); commandBank = configureCommands(); webSearchers = createSearchers(); Console.OutputEncoding = Encoding.UTF8; while (execute) { Console.WriteLine("Enter command"); string cmd = Console.ReadLine(); CommandData cmdData = new CommandData(cmd); try { commandBank.Execute(cmdData.Cmd, cmdData); } catch (Exception err) { Console.WriteLine(err); } } }
static CommandArray <CommandData> configureCommands() { CommandArray <CommandData> cmds = new CommandArray <CommandData>(); cmds.AddCommand(cmd => { cmd.Name = "search"; CommandDataPattern pattern = new CommandDataPattern(); pattern.AddOption('l', false); pattern.AddOption('w', true); pattern.AddOption('a', false); cmd.Execute = (arguments) => { CommandData argument = arguments[0]; argument.SetPattern(pattern); Stream outStream = null; if (argument.IsKey('w')) { FileMode mode = FileMode.Create; if (argument.IsKey('a')) { mode = FileMode.Append; } outStream = new FileStream(argument.GetKeyValue('w'), mode); } else { outStream = Console.OpenStandardOutput(); } String searchPhrase = argument.args[0]; using (outStream) { if (argument.IsKey('l')) {//поиск в БД writeToStream(outStream, DBRepository.findByQuery(searchPhrase), searchPhrase); } else {//запрос к гуглу Query searchResult = webSearchers[0].search(searchPhrase); DBRepository.ConnectToDB(connect => { Query query = (from q in connect.queries where q.title == searchPhrase select q).Include("links").FirstOrDefault(); if (query != null) { if (!searchResult.Equals(query)) { Console.WriteLine("update data base"); connect.queries.Remove(query); connect.queries.Add(searchResult); connect.SaveChanges(); } } else { Console.WriteLine("write to data base"); connect.queries.Add(searchResult); connect.SaveChanges(); } }); writeToStream(outStream, searchResult.links, searchPhrase); } } }; }); cmds.AddCommand(cmd => { cmd.Name = "exit"; cmd.Execute = (arguments) => { Console.WriteLine("exiting..."); execute = false; }; }); return(cmds); }