private HandlerProvider(MqlHandler mqlHandler, HandlerElement handlerElement, ExpertInfo expertInfo) { this._mqlHandler = mqlHandler; this._mqlHandler.CallMqlInternal = new Func <string, IEnumerable <string>, string>(this.OnCallMqlMethod); this.HandlerConfiguration = handlerElement; this.ExpertInfo = expertInfo; }
public ExpertInfo InitTerminal(ExpertInfo expert) { try { using (var Session = ConnectionHelper.CreateNewSession()) { var accNumber = long.Parse(expert.Account); var terminal = data.getTerminalByNumber(Session, accNumber); if (terminal == null) { var msg = $"Unknown AccountNumber {expert.Account} ERROR"; log.Log(msg); expert.Magic = accNumber; expert.Reason = msg; return(expert); } SubscribeToSignals(accNumber); log.Info($"Terminal <{accNumber}> Subscribed."); } return(expert); } catch (Exception e) { log.Error(e); expert.Magic = 0; } return(expert); }
public frmGiangVienHeThong(Account oAccount, ExpertInfo oExpertInfo, Classes oClasses) : base(oAccount) { InitializeComponent(); mLisExpertInfo = new List <ExpertInfo>(); mClasses = oClasses; mExpertInfo = oExpertInfo; }
private HandlerProvider(MqlHandler mqlHandler, HandlerElement handlerElement, ExpertInfo expertInfo) { _mqlHandler = mqlHandler; _mqlHandler.CallMqlInternal = OnCallMqlMethod; HandlerConfiguration = handlerElement; ExpertInfo = expertInfo; }
public void DeInitExpert(ExpertInfo expert) { try { using (var Session = ConnectionHelper.CreateNewSession()) { var magicNumber = (int)expert.Magic; var adviser = data.getAdviserByMagicNumber(Session, magicNumber); if (adviser == null) { log.Error("Expert with MagicNumber=" + magicNumber + " doesn't exist"); return; } UnSubscribeFromSignals(magicNumber); adviser.Running = false; data.SaveInsertAdviser(Session, adviser); var infoMsg = $"Expert On <{adviser.Symbol.Name}> Closed"; log.Info(infoMsg); // with reason {ReasonToString(expert.Reason)}. } } catch (Exception e) { log.Error("DeInitExpert: " + e); } }
private void frmGiangVienAdd_Load(object sender, EventArgs e) { actionUpdate.PressUpdate += new EventHandler(actionUpdate_PressUpdate); actionUpdate.PressHelp += new EventHandler(actionUpdate_PressHelp); actionUpdate.PressClose += new EventHandler(actionUpdate_PressClose); actionUpdate.PressNew += new EventHandler(actionUpdate_PressNew); //iFlag = 0: Thêm mới; iFlag = 1: Sửa Load_lookupEditTrungTam(); if (iFlag == 0) { this.Text = "Thêm giáo viên mới"; } else { ExpertInfo oExpInfo = mExpertInfoBll.getElementById(idGV); txtHoten.Text = oExpInfo.ExpertName; txtEmail.Text = oExpInfo.Email; txtDiaChi.Text = oExpInfo.Address; txtMobile.Text = oExpInfo.Mobile; txtMota.Text = oExpInfo.Description; txtNamKinhNghiem.Text = oExpInfo.YearsExperience.ToString(); txtNoiDung.Text = "Không có sơ yếu lý lịch thì điền gì?"; txtTruongTotNghiep.Text = oExpInfo.UniversityDegree; cboGioiTinh.EditValue = oExpInfo.sSex; dateEditNgaySinh.EditValue = oExpInfo.DateBirthday; this.Text = "Sửa thông tin giáo viên " + oExpInfo.ExpertName; } }
internal static HandlerProvider GetOrCreate(ExpertInfo expertInfo, HostElement hostElement) { lock (HandlerProvider._storageLocker) { if (HandlerProvider._storage.ContainsKey(expertInfo.Discriminator)) { return(HandlerProvider._storage[expertInfo.Discriminator]); } if (!hostElement.Handlers.ContainsKey(expertInfo.HandlerName)) { throw new HandlerLoadException(expertInfo, "Requested application not found in configuration", (Exception)null); } HandlerElement local_0 = hostElement.Handlers[expertInfo.HandlerName]; Assembly local_1; try { local_1 = Assembly.LoadFile(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + local_0.AssemblyName + ".dll"); } catch (Exception exception_3) { throw new HandlerLoadException(expertInfo, "Requested assembly not found", exception_3); } Type local_3; try { local_3 = local_1.GetType(local_0.TypeName); } catch (Exception exception_2) { throw new HandlerLoadException(expertInfo, "Requested type not found in assembly.", exception_2); } MqlHandler local_5; try { local_5 = (MqlHandler)Activator.CreateInstance(local_3); } catch (Exception exception_1) { throw new HandlerLoadException(expertInfo, "Can't create intance of expert.", exception_1); } try { foreach (ParameterElement item_0 in (ConfigurationElementCollection)local_0.InputParameters) { PropertyInfo local_8 = local_5.GetType().GetProperty(item_0.PropertyName); Type local_9 = local_8.PropertyType; object local_10 = Convert.ChangeType((object)item_0.PropertyValue, local_9); local_8.SetValue((object)local_5, local_10); } } catch (Exception exception_0) { throw new HandlerLoadException(expertInfo, "Can't set input parameters for expert", exception_0); } local_5.Discriminator = expertInfo.Discriminator; HandlerProvider local_12 = new HandlerProvider(local_5, local_0, expertInfo); HandlerProvider._storage.Add(expertInfo.Discriminator, local_12); return(local_12); } }
private void LoadSavedOrders(DBAdviser adviser, ref ExpertInfo expert) { var terminals = Container.Resolve <ITerminalEvents>(); List <PositionInfo> positions = terminals.GetPositions4Adviser(adviser.Id); if (Utils.HasAny(positions)) { expert.Orders = JsonConvert.SerializeObject(positions); } }
public void DeInitTerminal(ExpertInfo expert) { try { var accNumber = long.Parse(expert.Account); UnSubscribeFromSignals(accNumber); log.Info($"Terminal: <{accNumber}> UnSubscribed."); } catch (Exception e) { log.Error("DeInitTerminal: " + e); } }
public string PostExpert(ExpertInfo expert) { try { expert.ExpertID = GenExpertID(); db.ExpertInfo.Add(expert); db.SaveChanges(); return("success"); } catch (Exception ex) { return("error " + ex.Message); } }
private long GenExpertID() { Random rd = new Random(); int r = rd.Next(1000); long ExpertID = (long)(DateTime.Now.ToUniversalTime() - new DateTime(2018, 3, 24)).TotalMilliseconds + r; ExpertInfo tryFind = db.ExpertInfo.Find(ExpertID); while (tryFind != null) { ExpertID = GenExpertID(); tryFind = db.ExpertInfo.Find(ExpertID); } return(ExpertID); }
public HttpResponseMessage GetExpertInfo() { Dictionary <string, string> res = new Dictionary <string, string>(); var cookie = HttpContext.Current.Request.Cookies["account"]; if (cookie == null) { res.Add("Message", "error"); res.Add("Details", "cookie error"); return(ConvertToJson(res)); } long userID = long.Parse(HttpContext.Current.Request.Cookies["account"]["userID"]); UserExpert ue = db.UserExpert.FirstOrDefault(UserExpert => UserExpert.UserID == userID); if (ue == null) { res.Add("Message", "error"); res.Add("Details", "not an expert"); return(ConvertToJson(res)); } long expertID = (long)ue.ExpertID; ExpertInfo ei = db.ExpertInfo.Find(expertID); res.Add("Message", "success"); db.Configuration.ProxyCreationEnabled = false; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <string, string> data = new Dictionary <string, string>(); data.Add("Name", ei.Name); data.Add("Workstation", ei.Workstation); data.Add("TimesCited", ei.TimesCited.ToString()); data.Add("Results", ei.Results.ToString()); data.Add("PUJournals", ei.PUJournals.ToString()); data.Add("CSCDJournals", ei.CSCDJournals.ToString()); data.Add("CTJournals", ei.CTJournals.ToString()); data.Add("EIJournals", ei.EIJournals.ToString()); data.Add("SCIEJournals", ei.SCIEJournals.ToString()); data.Add("SSCIJournals", ei.SSCIJournals.ToString()); data.Add("OtherJournals", ei.OtherJournals.ToString()); data.Add("ConferencePapers", ei.ConferencePapers.ToString()); data.Add("Field", ei.Field); data.Add("Books", ei.Books.ToString()); data.Add("Others", ei.Others.ToString()); string r = serializer.Serialize(data); res.Add("Data", r); return(ConvertToJson(res)); }
private void btnGiangVien_Click(object sender, EventArgs e) { ExpertInfo oExpertInfo = new ExpertInfo(); frmGiangVienHeThong ofrm = new frmGiangVienHeThong(mAccount, oExpertInfo, mClasses); ofrm.ShowDialog(); if (oExpertInfo.Id > 0 && oExpertInfo.iFlag == -1) { //MessageBox.Show("- Ex: " + oExpertInfo.Id); mClasses.ExpertId = oExpertInfo.Id; bool isResult = new ClassesBll(mAccount).UpdateElement(mClasses); //if(isResult) MessageBox.Show("Bạn đã chọn Chuyên gia thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
void actionUpdate_PressUpdate(object sender, EventArgs e) { //Lưu giảng viên: ExpertInfo oExpInfo = new ExpertInfo(); oExpInfo.Id = idGV; oExpInfo.ExpertName = txtHoten.Text; oExpInfo.Email = txtEmail.Text; oExpInfo.Address = txtDiaChi.Text; oExpInfo.Mobile = txtMobile.Text; oExpInfo.Description = txtMota.Text; oExpInfo.YearsExperience = int.Parse(txtNamKinhNghiem.Text); oExpInfo.UniversityDegree = txtTruongTotNghiep.Text; oExpInfo.sSex = cboGioiTinh.EditValue.ToString(); if (lookupEditTrungTam.EditValue != null) { oExpInfo.CenterId = (int)lookupEditTrungTam.EditValue; } else { oExpInfo.CenterId = 1; } oExpInfo.CenterId = (int)lookupEditTrungTam.EditValue; if (dateEditNgaySinh.EditValue != null) { oExpInfo.DateBirthday = DateTime.Parse(dateEditNgaySinh.EditValue.ToString()); } oExpInfo.iFlag = iFlag; var check = mExpertInfoBll.InsertAndUpdateElement(oExpInfo); if ((check) & (iFlag == 0)) { MessageBox.Show("Thêm thành công!"); this.Close(); } else if (check & iFlag == 1) { MessageBox.Show("Sửa thành công!"); this.Close(); } else { MessageBox.Show("Thao tác không thành công!"); } }
/// <summary> /// 替换字段属性 /// </summary> /// <param name="li"></param> /// <returns></returns> private List <ExpertInfo> GetPropertiesString(List <Expert> li) { List <ExpertInfo> infolist = new List <ExpertInfo>(); ExpertInfo exptmp; foreach (var item in li) { exptmp = new ExpertInfo(); exptmp.sId = item.sId; exptmp.eId = item.eId; exptmp.eName = item.eName; exptmp.gender = item.gender; exptmp.birthDay = item.birthDay; exptmp.identityNumber = item.identityNumber; exptmp.UnitDetailsOne = item.UnitDetailsOne; exptmp.UnitDetailsTwo = item.UnitDetailsTwo; exptmp.UnitDetailsThree = item.UnitDetailsThree; exptmp.field = item.field; exptmp.academicTitles = item.academicTitles; exptmp.email = item.email; exptmp.officePhone = item.officePhone; exptmp.cellPhone = item.cellPhone; exptmp.postalAddress = item.postalAddress; exptmp.expertSources = item.expertSources; exptmp.img = item.img; exptmp.personalUrl = item.personalUrl; exptmp.registrationForm = item.registrationForm; exptmp.Categories = item.Categories; exptmp.appointmentBook = item.appointmentBook; exptmp.SerialNum = item.SerialNum; exptmp.remark = item.remark; exptmp.expertIntroduction = item.expertIntroduction; exptmp.expertworkingExperience = item.expertworkingExperience; exptmp.expertAchievement = item.expertAchievement; exptmp.addTime = item.addTime; #region 替换字段 for (int i = 0; i < unitList.Count; i++) { if (unitList[i].id == item.unitProperty) { exptmp.unitporetyString = unitList[i].unitProperties; } } for (int i = 0; i < statusList.Count; i++) { if (statusList[i].sid == item.beStatus) { exptmp.bestatusString = statusList[i].beStatus; } } #endregion infolist.Add(exptmp); exptmp = null; } return(infolist); }
public RecommendInfo GetRecommendInfo() { string querystring = "select ApplicationType,UnitRecommend,UnitRecommendOName,ExpertName1,ExpertArea1,ExpertWorkType1,ExpertUnitPosition1,\r\n ExpertUnit1,ExpertRecommend1, ExpertRecommend1OName,ExpertName2,ExpertArea2,ExpertWorkType2,ExpertUnitPosition2,ExpertUnit2,\r\n ExpertRecommend2,ExpertRecommend2OName,ExpertName3,ExpertArea3,ExpertWorkType3,ExpertUnitPosition3,ExpertUnit3,ExpertRecommend3,ExpertRecommend3OName from BaseInfor"; string text = ""; DataTable data = base.GetData(querystring, out text); RecommendInfo recommendInfo = null; if (data != null && data.Rows.Count > 0) { recommendInfo = new RecommendInfo(); recommendInfo.ApplicationType = ((data.Rows[0]["ApplicationType"] == DBNull.Value) ? "单位推荐" : data.Rows[0]["ApplicationType"].ToString()); recommendInfo.RAttachmentInfo.StoreName = ((data.Rows[0]["UnitRecommend"] == DBNull.Value) ? "" : data.Rows[0]["UnitRecommend"].ToString()); recommendInfo.RAttachmentInfo.UploadName = ((data.Rows[0]["UnitRecommendOName"] == DBNull.Value) ? "" : data.Rows[0]["UnitRecommendOName"].ToString()); ExpertInfo expertInfo = new ExpertInfo(); expertInfo.ExpertName = ((data.Rows[0]["ExpertName1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName1"].ToString()); expertInfo.ExpertArea = ((data.Rows[0]["ExpertArea1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea1"].ToString()); expertInfo.ExpertWorkType = ((data.Rows[0]["ExpertWorkType1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType1"].ToString()); expertInfo.ExpertUnitPosition = ((data.Rows[0]["ExpertUnitPosition1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition1"].ToString()); expertInfo.ExpertUnit = ((data.Rows[0]["ExpertUnit1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit1"].ToString()); expertInfo.EAttachmentInfo.StoreName = ((data.Rows[0]["ExpertRecommend1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend1"].ToString()); expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend1OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend1OName"].ToString()); recommendInfo.ExperInfoList.Add(expertInfo); expertInfo = new ExpertInfo(); expertInfo.ExpertName = ((data.Rows[0]["ExpertName2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName2"].ToString()); expertInfo.ExpertArea = ((data.Rows[0]["ExpertArea2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea2"].ToString()); expertInfo.ExpertWorkType = ((data.Rows[0]["ExpertWorkType2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType2"].ToString()); expertInfo.ExpertUnitPosition = ((data.Rows[0]["ExpertUnitPosition2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition2"].ToString()); expertInfo.ExpertUnit = ((data.Rows[0]["ExpertUnit2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit2"].ToString()); expertInfo.EAttachmentInfo.StoreName = ((data.Rows[0]["ExpertRecommend2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend2"].ToString()); expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend2OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend2OName"].ToString()); recommendInfo.ExperInfoList.Add(expertInfo); expertInfo = new ExpertInfo(); expertInfo.ExpertName = ((data.Rows[0]["ExpertName3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName3"].ToString()); expertInfo.ExpertArea = ((data.Rows[0]["ExpertArea3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea3"].ToString()); expertInfo.ExpertWorkType = ((data.Rows[0]["ExpertWorkType3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType3"].ToString()); expertInfo.ExpertUnitPosition = ((data.Rows[0]["ExpertUnitPosition3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition3"].ToString()); expertInfo.ExpertUnit = ((data.Rows[0]["ExpertUnit3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit3"].ToString()); expertInfo.EAttachmentInfo.StoreName = ((data.Rows[0]["ExpertRecommend3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend3"].ToString()); expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend3OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend3OName"].ToString()); recommendInfo.ExperInfoList.Add(expertInfo); } return(recommendInfo); }
public ExpertInfo Execute(ApplicationUser user) { var expertInfo = new ExpertInfo { UserId = user.Id, UserName = user.NameRu, IpcCodes = user.Ipcs.Any() ? string.Join(", ", user.Ipcs.Select(i => i.Ipc.Code)) : string.Empty }; var requests = Executor.GetQuery <GetRequestsByUserIdQuery>().Process(q => q.Execute(user.Id)); var sumCoefficientComplexity = requests.Where(r => r.CoefficientComplexity.HasValue).Sum(r => r.CoefficientComplexity.Value); expertInfo.EmploymentIndexExpert = Math.Round(sumCoefficientComplexity, 3); expertInfo.CountRequests = requests.Where(r => r.CurrentWorkflow.IsComplete == false).Count(); expertInfo.CountCompletedRequestsCurrentYear = requests.Where(r => r.CurrentWorkflow.IsComplete == true && r.CurrentWorkflow.DateCreate.Year == DateTime.Now.Year).Count(); expertInfo.RequestNumbers = string.Join(", ", requests.Where(r => string.IsNullOrEmpty(r.RequestNum) == false).Select(r => r.RequestNum)); return(expertInfo); }
public HttpResponseMessage ModifyExpertInfo(ExpertInfo info) { Dictionary <string, string> res = new Dictionary <string, string>(); var cookie = HttpContext.Current.Request.Cookies["account"]; if (cookie == null) { res.Add("Message", "error"); res.Add("Details", "cookie error"); return(ConvertToJson(res)); } long userID = long.Parse(HttpContext.Current.Request.Cookies["account"]["userID"]); UserExpert ue = db.UserExpert.FirstOrDefault(UserExpert => UserExpert.UserID == userID); if (ue == null) { res.Add("Message", "error"); res.Add("Details", "not an expert"); return(ConvertToJson(res)); } long expertID = (long)ue.ExpertID; ExpertInfo ei = db.ExpertInfo.Find(expertID); if (ei.Name != null) { ei.Name = info.Name; } if (ei.Workstation != null) { ei.Workstation = info.Workstation; } if (ei.Field != null) { ei.Field = info.Field; } db.SaveChanges(); res.Add("Message", "success"); return(ConvertToJson(res)); }
public ExpertInfo InitExpert(ExpertInfo expert) { try { using (var Session = ConnectionHelper.CreateNewSession()) { var msg = ""; var accNumber = long.Parse(expert.Account); var terminal = data.getTerminalByNumber(Session, accNumber); if (terminal == null) { msg = $"Unknown AccountNumber {expert.Account}. Please Register Account in DB."; log.Log(msg); expert.Magic = 0; expert.Reason = msg; return(expert); } var strSymbol = expert.Symbol; if (strSymbol.Contains("_i")) { strSymbol = strSymbol.Substring(0, strSymbol.Length - 2); } var symbol = data.getSymbolByName(strSymbol); if (symbol == null) { msg = $"Unknown Symbol {strSymbol}. Please register Symbol in DB."; log.Log(msg); expert.Reason = msg; return(expert); } var adviser = data.getAdviser(Session, terminal.Id, symbol.Id, expert.EAName); if (adviser == null) { adviser = new DBAdviser(); adviser.Name = expert.EAName; adviser.Timeframe = expert.ChartTimeFrame; adviser.Retired = false; var dbt = new DBTerminal(); dbt.Id = terminal.Id; adviser.Terminal = dbt; adviser.Symbol = symbol; } else { expert.IsMaster = adviser.IsMaster; } adviser.Running = true; if (adviser.Id <= 0) { data.SaveInsertAdviser(Session, adviser); } var dynProps = data.GetPropertiesInstance((short)EntitiesEnum.Adviser, adviser.Id); if (dynProps == null || Utils.HasAny(dynProps.Vals) == false) { expert.Data = ""; } else { var res = JsonConvert.DeserializeObject <Dictionary <string, DynamicProperty> >(dynProps.Vals); var state = DefaultProperties.transformProperties(res); expert.Data = JsonConvert.SerializeObject(state); } LoadSavedOrders(adviser, ref expert); expert.Magic = adviser.Id; SubscribeToSignals(adviser.Id); log.Info($"Expert On <{adviser.Symbol.Name}> On TF=<{expert.ChartTimeFrame}> loaded successfully!"); } return(expert); } catch (Exception e) { log.Error(e); expert.Magic = 0; } return(expert); }
public void PostSignal(SignalInfo signal) { if ((SignalFlags)signal.Flags == SignalFlags.Cluster) { xtrade.PostSignalTo(signal); return; } switch ((EnumSignals)signal.Id) { case EnumSignals.SIGNAL_CHECK_HEALTH: if (xtrade.IsDebug()) { log.Info("CheckHealth: " + signal.Flags); } break; case EnumSignals.SIGNAL_DEALS_HISTORY: { List <DealInfo> deals = null; if (signal.Data != null) { deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString()); } else { deals = new List <DealInfo>(); } xtrade.SaveDeals(deals); } break; case EnumSignals.SIGNAL_CHECK_BALANCE: { if (signal.Data == null) { break; } JArray jarray = (JArray)signal.Data; if (jarray == null || jarray.Count == 0) { break; } decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0; decimal equity = jarray.First.Value <decimal?>("Equity") ?? 0; int Account = jarray.First.Value <int?>("Account") ?? 0; xtrade.UpdateBalance(Account, balance, equity); } break; case EnumSignals.SIGNAL_UPDATE_RATES: { try { List <RatesInfo> rates = null; if (signal.Data != null) { rates = JsonConvert.DeserializeObject <List <RatesInfo> >(signal.Data.ToString()); } if (rates != null) { var usdbynrateTask = GetBYNRates(); double usdbynrate = usdbynrateTask.Result; if (usdbynrate > 0) { RatesInfo rate = new RatesInfo(); rate.Ask = usdbynrate; rate.Bid = usdbynrate; rate.Symbol = "USDBYN"; rates.Add(rate); } } xtrade.UpdateRates(rates); } catch (Exception e) { log.Info(String.Format($"GetBYNUSDRates Error: {0}", e.ToString())); } } break; case EnumSignals.SIGNAL_ACTIVE_ORDERS: { List <PositionInfo> positions = null; if (signal.Data != null) { positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString()); } else { positions = new List <PositionInfo>(); } terminals.UpdatePositions(signal.ObjectId, signal.Value, positions); } break; /* * case EnumSignals.SIGNAL_UPDATE_SLTP: * { * List<PositionInfo> positions = null; * if (signal.Data != null) * positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString()); * else * positions = new List<PositionInfo>(); * terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions); * } * break; */ case EnumSignals.SIGNAL_WARN_NEWS: break; case EnumSignals.SIGNAL_DEINIT_EXPERT: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitExpert(expert); } break; case EnumSignals.SIGNAL_DEINIT_TERMINAL: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitTerminal(expert); } break; // case EnumSignals.SIGNAL_SAVE_EXPERT: // { // deprecated //ExpertInfo expert = JsonConvert.DeserializeObject<ExpertInfo>(signal.Data.ToString()); //if (expert != null) // xtrade.SaveExpert(expert); // } // break; case EnumSignals.SIGNAL_POST_LOG: { if (signal.Data == null) { break; } Dictionary <string, string> paramsList = JsonConvert.DeserializeObject <Dictionary <string, string> >(signal.Data.ToString()); StringBuilder message = new StringBuilder(); if (paramsList.ContainsKey("Account")) { message.Append("<" + paramsList["Account"] + ">:"); } if (paramsList.ContainsKey("Magic")) { message.Append("_" + paramsList["Magic"] + "_:"); } if (paramsList.ContainsKey("order")) { message.Append("**" + paramsList["order"] + "**"); } if (paramsList.ContainsKey("message")) { message.Append(paramsList["message"]); } log.Log(message.ToString()); // log.Info(message); } break; } }
public void PostSignal(SignalInfo signal) { if ((SignalFlags)signal.Flags == SignalFlags.Cluster) { xtrade.PostSignalTo(signal); return; } switch ((EnumSignals)signal.Id) { case EnumSignals.SIGNAL_CHECK_HEALTH: if (xtrade.IsDebug()) { log.Info("CheckHealth: " + signal.Flags); } break; case EnumSignals.SIGNAL_DEALS_HISTORY: { List <DealInfo> deals = null; if (signal.Data != null) { deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString()); } else { deals = new List <DealInfo>(); } xtrade.SaveDeals(deals); } break; case EnumSignals.SIGNAL_CHECK_BALANCE: { if (signal.Data == null) { break; } JArray jarray = (JArray)signal.Data; if (jarray == null || jarray.Count == 0) { break; } decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0; decimal equity = jarray.First.Value <decimal?>("Equity") ?? 0; int Account = jarray.First.Value <int?>("Account") ?? 0; xtrade.UpdateBalance(Account, balance, equity); } break; case EnumSignals.SIGNAL_UPDATE_RATES: break; case EnumSignals.SIGNAL_ACTIVE_ORDERS: { // Dictionary<string, string> signal = JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters); // var jObject = JObject.Parse(parameters); // var jTokenData = jObject.GetValue("Data"); // var Value = jObject.GetValue("Value"); // if (jTokenData != null) List <PositionInfo> positions = null; if (signal.Data != null) { positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString()); } else { positions = new List <PositionInfo>(); } terminals.UpdatePositions(signal.ObjectId, signal.Value, positions); } break; /* * case EnumSignals.SIGNAL_UPDATE_SLTP: * { * List<PositionInfo> positions = null; * if (signal.Data != null) * positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString()); * else * positions = new List<PositionInfo>(); * terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions); * } * break; */ case EnumSignals.SIGNAL_WARN_NEWS: break; case EnumSignals.SIGNAL_DEINIT_EXPERT: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitExpert(expert); } break; case EnumSignals.SIGNAL_DEINIT_TERMINAL: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitTerminal(expert); } break; // case EnumSignals.SIGNAL_SAVE_EXPERT: // { // deprecated //ExpertInfo expert = JsonConvert.DeserializeObject<ExpertInfo>(signal.Data.ToString()); //if (expert != null) // xtrade.SaveExpert(expert); // } // break; case EnumSignals.SIGNAL_POST_LOG: { if (signal.Data == null) { break; } Dictionary <string, string> paramsList = JsonConvert.DeserializeObject <Dictionary <string, string> >(signal.Data.ToString()); StringBuilder message = new StringBuilder(); if (paramsList.ContainsKey("Account")) { message.Append("<" + paramsList["Account"] + ">:"); } if (paramsList.ContainsKey("Magic")) { message.Append("_" + paramsList["Magic"] + "_:"); } if (paramsList.ContainsKey("order")) { message.Append("**" + paramsList["order"] + "**"); } if (paramsList.ContainsKey("message")) { message.Append(paramsList["message"]); } log.Log(message.ToString()); // log.Info(message); } break; } }
public MqlErrorException(ExpertInfo expertInfo, MethodCallInfo clientMethodInfo) : base(string.Format("MQL returned error: '{0}' for method {1}. Failure Context: {2}", clientMethodInfo.ErrorMessage, clientMethodInfo, expertInfo)) { }
internal static HandlerProvider GetOrCreate(ExpertInfo expertInfo, HostElement hostElement) { Assembly assembly; Type type; MqlHandler mqlHandler; HandlerProvider item; lock (_storageLocker) { if (!_storage.ContainsKey(expertInfo.Discriminator)) { if (hostElement.Handlers.ContainsKey(expertInfo.HandlerName)) { HandlerElement handlerElement = hostElement.Handlers[expertInfo.HandlerName]; try { var assemblyPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), string.Concat(handlerElement.AssemblyName, ".dll")); assembly = Assembly.LoadFile(assemblyPath); } catch (Exception exception1) { Exception exception = exception1; throw new HandlerLoadException(expertInfo, "Requested assembly not found", exception); } try { type = assembly.GetType(handlerElement.TypeName); } catch (Exception exception3) { Exception exception2 = exception3; throw new HandlerLoadException(expertInfo, "Requested type not found in assembly.", exception2); } try { mqlHandler = (MqlHandler)Activator.CreateInstance(type); } catch (Exception exception5) { Exception exception4 = exception5; throw new HandlerLoadException(expertInfo, "Can't create intance of expert.", exception4); } try { foreach (ParameterElement inputParameter in handlerElement.InputParameters) { PropertyInfo property = mqlHandler.GetType().GetProperty(inputParameter.PropertyName); Type propertyType = property.PropertyType; object obj = Convert.ChangeType(inputParameter.PropertyValue, propertyType); property.SetValue(mqlHandler, obj); } } catch (Exception exception7) { Exception exception6 = exception7; throw new HandlerLoadException(expertInfo, "Can't set input parameters for expert", exception6); } var handlerProvider = new HandlerProvider(mqlHandler, handlerElement, expertInfo); _storage.TryAdd(expertInfo.Discriminator, handlerProvider); item = handlerProvider; } else { throw new HandlerLoadException(expertInfo, "Requested application not found in configuration", null); } } else { item = _storage[expertInfo.Discriminator]; } } return(item); }
public HandlerExecutionException(ExpertInfo expertInfo, Exception innerException) : base(string.Format("Handler execution failed with error '{0}'. Failure Context: {1}", (object)innerException.Message, (object)expertInfo), innerException) { }
public void PostSignal(SignalInfo signal, IMessagingServer server) { if ((SignalFlags)signal.Flags == SignalFlags.Cluster) { xtrade.PostSignalTo(signal); return; } switch ((EnumSignals)signal.Id) { case EnumSignals.SIGNAL_POST_LOG: { if (signal.Data == null) { break; } MainService.thisGlobal.DoLog(signal); } break; case EnumSignals.SIGNAL_CHECK_HEALTH: if (xtrade.IsDebug()) { log.Info("CheckHealth: " + signal.Flags); } break; case EnumSignals.SIGNAL_DEALS_HISTORY: { List <DealInfo> deals = null; if (signal.Data != null) { deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString()); } else { deals = new List <DealInfo>(); } xtrade.SaveDeals(deals); } break; case EnumSignals.SIGNAL_CHECK_BALANCE: { if (signal.Data == null) { break; } JArray jarray = (JArray)signal.Data; if (jarray == null || jarray.Count == 0) { break; } decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0; decimal equity = jarray.First.Value <decimal?>("Equity") ?? 0; int Account = jarray.First.Value <int?>("Account") ?? 0; xtrade.UpdateBalance(Account, balance, equity); } break; case EnumSignals.SIGNAL_UPDATE_RATES: { try { List <RatesInfo> rates = null; if (signal.Data != null) { rates = JsonConvert.DeserializeObject <List <RatesInfo> >(signal.Data.ToString()); } if (rates != null) { var usdbynrateTask = GetBYNRates(); double usdbynrate = usdbynrateTask.Result; if (usdbynrate > 0) { RatesInfo rate = new RatesInfo(); rate.Ask = usdbynrate; rate.Bid = usdbynrate; rate.Symbol = "USDBYN"; rates.Add(rate); } } xtrade.UpdateRates(rates); } catch (Exception e) { log.Info(String.Format($"GetBYNUSDRates Error: {0}", e.ToString())); } } break; case EnumSignals.SIGNAL_ACTIVE_ORDERS: { List <PositionInfo> positions = null; if (signal.Data != null) { positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString()); } else { positions = new List <PositionInfo>(); } var terminals = MainService.thisGlobal.Container.Resolve <ITerminalEvents>(); terminals.UpdatePositions(signal.ObjectId, signal.Value, positions); } break; /* * case EnumSignals.SIGNAL_UPDATE_SLTP: * { * List<PositionInfo> positions = null; * if (signal.Data != null) * positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString()); * else * positions = new List<PositionInfo>(); * terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions); * } * break; */ case EnumSignals.SIGNAL_WARN_NEWS: break; case EnumSignals.SIGNAL_DEINIT_EXPERT: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitExpert(expert); } break; case EnumSignals.SIGNAL_DEINIT_TERMINAL: { ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString()); xtrade.DeInitTerminal(expert); } break; case EnumSignals.SIGNAL_LEVELS4SYMBOL: { string symbol = signal.Sym; string levelsString = xtrade.Levels4Symbol(symbol); var result = xtrade.CreateSignal(SignalFlags.Expert, signal.ObjectId, (EnumSignals)signal.Id, signal.ChartId); result.Sym = symbol; result.Data = levelsString; var send = JsonConvert.SerializeObject(result); if (server != null) { server.MulticastText(send); } } break; default: if (server != null) { var result = xtrade.SendSignal(signal); if (result != null) { var send = JsonConvert.SerializeObject(result); server.MulticastText(send); } } break; } }
private void HandleClientComm(object client) { lock (client) { TcpClient local_0 = (TcpClient)client; Trace.Write((object)new LogInfo(LogType.Initializations, (Exception)null, "Connection opened")); HandlerProvider handlerProvider = (HandlerProvider)null; try { NetworkStream local_1 = local_0.GetStream(); string[] local_2 = this.GetMessage(local_1); if (local_2.Length < 3) { throw new MessageException(local_2, 3, "discriminator|applicationName|methodName|param1|param2|param3"); } MethodCallInfo local_3 = new MethodCallInfo(local_2[2], Enumerable.Skip <string>((IEnumerable <string>)local_2, 3)); ExpertInfo expertInfo = new ExpertInfo(local_2[0] + local_2[1], local_2[1], local_3); handlerProvider = HandlerProvider.GetOrCreate(expertInfo, this.HostConfiguration); lock (handlerProvider.Locker) { handlerProvider.BeginTime = DateTime.Now; handlerProvider.ServerMethod = local_3; handlerProvider.ClientMethod = (MethodCallInfo)null; Thread local_4 = new Thread((ParameterizedThreadStart)(x => { try { ((HandlerProvider)x).ProceedServerMethod(); } catch (Exception exception_1) { HandlerExecutionException local_1 = new HandlerExecutionException(expertInfo, exception_1); handlerProvider.ServerMethod.ErrorMessage = local_1.Message; Trace.Write((object)new LogInfo(LogType.HandlerExecutionError, (Exception)local_1, "")); } finally { handlerProvider.ClientCallSemaphore.Set(); } })) { IsBackground = this._isBackground }; local_4.CurrentCulture = new CultureInfo("en-US"); local_4.Name = (string)(object)local_0.Client.RemoteEndPoint + (object)" > " + (string)(object)this._tcpListener.Server.LocalEndPoint; local_4.Start((object)handlerProvider); handlerProvider.ClientCallSemaphore.WaitOne(); while (handlerProvider.ClientMethod != null) { string[] local_5 = new string[2 + Enumerable.Count <string>((IEnumerable <string>)handlerProvider.ClientMethod.Parameters)]; local_5[0] = "###MQL###"; local_5[1] = handlerProvider.ClientMethod.MethodName; for (int local_6 = 2; local_6 < local_5.Length; ++local_6) { local_5[local_6] = handlerProvider.ClientMethod.Parameters[local_6 - 2]; } this.WriteMessage(local_1, local_5); string[] local_7 = this.GetMessage(local_1); if (local_7.Length < 2) { throw new MessageException(local_7, 2, "lastError|returnValue"); } handlerProvider.ClientMethod.ErrorMessage = local_7[0] == "0:no error" ? (string)null : local_7[0]; handlerProvider.ClientMethod.ReturnValue = local_7[1] == "###EMPTY###" ? string.Empty : local_7[1]; handlerProvider.ServerCallSemaphore.Set(); handlerProvider.ClientCallSemaphore.WaitOne(); } if (handlerProvider.ServerMethod.ErrorMessage != null) { this.WriteMessage(local_1, "###ERR###", handlerProvider.ServerMethod.ErrorMessage); } if (handlerProvider.ServerMethod.ReturnValue != null) { this.WriteMessage(local_1, new string[1] { handlerProvider.ServerMethod.ReturnValue }); } } } catch (Exception exception_0) { Trace.Write((object)new LogInfo(LogType.Execption, exception_0, "")); } finally { if (handlerProvider != null) { handlerProvider.EndTime = DateTime.Now; Trace.Write((object)new LogInfo(LogType.Notifications, (Exception)null, "Method execution time: " + (object)(handlerProvider.EndTime - handlerProvider.BeginTime).TotalMilliseconds + " ms.")); } local_0.Close(); } Trace.Write((object)new LogInfo(LogType.Initializations, (Exception)null, "Connection closed\n")); } }
private void HandleClientComm(object client) { string str; string str1; TcpClient tcpClient = (TcpClient)client; Trace.Write(new TraceInfo(BridgeTraceErrorType.HostInfo, null, "Connection opened")); HandlerProvider orCreate = null; try { try { NetworkStream stream = tcpClient.GetStream(); string[] message = this.GetMessage(stream); if ((int)message.Length >= 3) { MethodCallInfo methodCallInfo = new MethodCallInfo(message[2], message.Skip <string>(3)); ExpertInfo expertInfo = new ExpertInfo(message[0], message[1], methodCallInfo); orCreate = HandlerProvider.GetOrCreate(expertInfo, this.HostConfiguration); lock (orCreate.Locker) { orCreate.BeginTime = DateTime.Now; orCreate.ServerMethod = methodCallInfo; orCreate.ClientMethod = null; Thread thread = new Thread((object x) => { try { try { ((HandlerProvider)x).ProceedServerMethod(); } catch (Exception exception1) { Exception exception = exception1; HandlerExecutionException handlerExecutionException = new HandlerExecutionException(expertInfo, exception); orCreate.ServerMethod.ErrorMessage = handlerExecutionException.Message; Trace.Write(new TraceInfo(BridgeTraceErrorType.HandlerExecutionError, handlerExecutionException, "")); } } finally { orCreate.ClientCallSemaphore.Set(); } }); thread.IsBackground = this._isBackground; Thread cultureInfo = thread; cultureInfo.CurrentCulture = new CultureInfo("en-US"); cultureInfo.Name = string.Concat(tcpClient.Client.RemoteEndPoint, " > ", this._tcpListener.Server.LocalEndPoint); cultureInfo.Start(orCreate); orCreate.ClientCallSemaphore.WaitOne(); while (orCreate.ClientMethod != null) { string[] methodName = new string[2 + orCreate.ClientMethod.Parameters.Count <string>()]; methodName[0] = "###MQL###"; methodName[1] = orCreate.ClientMethod.MethodName; for (int i = 2; i < (int)methodName.Length; i++) { methodName[i] = orCreate.ClientMethod.Parameters[i - 2]; } this.WriteMessage(stream, methodName); string[] strArrays = this.GetMessage(stream); if ((int)strArrays.Length >= 2) { MethodCallInfo clientMethod = orCreate.ClientMethod; if (strArrays[0] == "0:no error") { str = null; } else { str = strArrays[0]; } clientMethod.ErrorMessage = str; MethodCallInfo clientMethod1 = orCreate.ClientMethod; str1 = (strArrays[1] == "###EMPTY###" ? string.Empty : strArrays[1]); clientMethod1.ReturnValue = str1; orCreate.ServerCallSemaphore.Set(); orCreate.ClientCallSemaphore.WaitOne(); } else { throw new MessageException(strArrays, 2, "lastError|returnValue"); } } if (orCreate.ServerMethod.ErrorMessage != null) { string[] errorMessage = new string[] { "###ERR###", orCreate.ServerMethod.ErrorMessage }; this.WriteMessage(stream, errorMessage); } if (orCreate.ServerMethod.ReturnValue != null) { string[] returnValue = new string[] { orCreate.ServerMethod.ReturnValue }; this.WriteMessage(stream, returnValue); } } } else { throw new MessageException(message, 3, "discriminator|applicationName|methodName|param1|param2|param3"); } } catch (Exception exception3) { Exception exception2 = exception3; Trace.Write(new TraceInfo(BridgeTraceErrorType.Execption, exception2, "")); } } finally { if (orCreate != null) { orCreate.EndTime = DateTime.Now; TimeSpan endTime = orCreate.EndTime - orCreate.BeginTime; Trace.Write(new TraceInfo(BridgeTraceErrorType.Service, null, string.Concat("Method execution time: ", endTime.TotalMilliseconds, " ms."))); } tcpClient.Close(); } Trace.Write(new TraceInfo(BridgeTraceErrorType.HostInfo, null, "Connection closed\n")); }
public HandlerLoadException(ExpertInfo expertInfo, string reason, Exception innerException) : base(string.Format("Can't load handler: {0}. Failure Context: {1}", (object)reason, (object)expertInfo), innerException) { }
protected override IList ExecuteCrawl(bool crawlAll) { IList list = new ArrayList(); string htl = string.Empty; string cookiestr = string.Empty; string viewState = string.Empty; int pageInt = 1; string eventValidation = string.Empty; try { htl = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8, ref cookiestr); } catch { return(null); } Parser parser = new Parser(new Lexer(htl)); NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new HasAttributeFilter("cellSpacing", "2"), new TagNameFilter("table"))); if (nodeList != null && nodeList.Count > 0) { string pageString = nodeList.AsString(); Regex regexPage = new Regex(@"共[^页]+页,"); Match pageMatch = regexPage.Match(pageString); try { pageInt = int.Parse(pageMatch.Value.Replace("共", "").Replace("页,", "").Replace(" ", "")); } catch { } } for (int i = 1; i <= pageInt; i++) { if (i > 1) { viewState = this.ToolWebSite.GetAspNetViewState(htl); eventValidation = this.ToolWebSite.GetAspNetEventValidation(htl); NameValueCollection nvc = this.ToolWebSite.GetNameValueCollection(new string[] { "__EVENTTARGET", "__EVENTARGUMENT", "__VIEWSTATE", "__VIEWSTATEENCRYPTED", "__EVENTVALIDATION", "ctl00$Header$drpSearchType", "ctl00$Header$txtGcxm", "ctl00$Content$hdnId", "ctl00$Content$hdnOperate", "ctl00$hdnPageCount" }, new string[] { "ctl00$Content$GridView1", "Page$" + i.ToString(), viewState, "", eventValidation, "0", string.Empty, string.Empty, string.Empty, pageInt.ToString() }); try { htl = this.ToolWebSite.GetHtmlByUrl(SiteUrl, nvc, Encoding.UTF8); } catch { return(list); } } parser = new Parser(new Lexer(htl)); nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new HasAttributeFilter("id", "ctl00_Content_GridView1"), new TagNameFilter("table"))); if (nodeList != null && nodeList.Count > 0) { TableTag table = nodeList[0] as TableTag; for (int j = 1; j < table.RowCount - 1; j++) { string expertName = string.Empty, workUnit = string.Empty, profession = string.Empty, remark = string.Empty, infourl = string.Empty, creator = string.Empty, CreateTime = string.Empty, lastModifTime = string.Empty, lastModifier = string.Empty; TableRow tr = table.Rows[j]; expertName = tr.Columns[1].ToPlainTextString().Trim(); workUnit = tr.Columns[2].ToPlainTextString().Trim(); profession = tr.Columns[3].ToPlainTextString().Replace("<", "").Replace("br", "").Replace(">", "").Trim(); infourl = SiteUrl; ExpertInfo info = ToolDb.GenExpertInfo(expertName, workUnit, profession, remark, infourl, creator, CreateTime, lastModifier, lastModifTime); list.Add(info); if (!crawlAll && list.Count >= this.MaxCount) { return(list); } } } } return(list); }