public static DateTime TradingDay(this RspUserLoginField field) { if (field == null || field.TradingDay == 0) { return(DateTime.MaxValue); } return(field.TradingDay > 0 ? GetDateTime(field.TradingDay) : DateTime.Today); }
public static string DebugInfo(this RspUserLoginField field) { if (field == null) { return(string.Empty); } return($"[TradingDay={field.TradingDay},LoginTime={field.LoginTime},InvestorName={field.InvestorName},XErrorID={field.XErrorID},Message={field.Text}]"); }
public static string RawErrorMsg(this RspUserLoginField field) { if (field == null) { return(string.Empty); } return($"[XErrorID={field.XErrorID},RawErrorID={field.RawErrorID},Message={field.Text}]"); }
public static DateTime TradingDay(this RspUserLoginField field) { if (field == null || field.TradingDay == 0) { return(DateTime.MaxValue); } if (field.TradingDay > 0) { var year = field.TradingDay / 10000; var month = field.TradingDay % 10000 / 100; var day = field.TradingDay % 100; return(new DateTime(year, month, day)); } return(DateTime.Today); }
public void Init(ServerInfoField server, UserInfoField user) { if (_api != null) { return; } User = user; Server = server; UserLogin = null; _api = new CtpMdApi(GetFlowPath(server, user)); InitHandler(); var items = server.Address.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in items) { _api.RegisterFront(item); } _publisher.Post(ConnectionStatus.Connecting); _api.Init(); }
private void OnRspUserLogin(object sender, CtpRspUserLogin response, CtpRspInfo rspInfo, int requestId, bool isLast) { if (response != null && CtpConvert.CheckRspInfo(rspInfo)) { Connected = true; UserLogin = new RspUserLoginField(); var now = DateTime.Now; UserLogin.TradingDay = now.Year * 10000 + now.Month * 100 + now.Day; UserLogin.LoginTime = now.Hour * 10000 + now.Minute * 100 + now.Second; UserLogin.UserID = User.UserID; UserLogin.SessionID = string.Empty; _publisher.Post(ConnectionStatus.Logined, UserLogin); _publisher.Post(ConnectionStatus.Done); } else { SendError(rspInfo, nameof(OnRspUserLogin)); _publisher.Post(ConnectionStatus.Disconnected); } }
private void OnRspUserLogin(ref CtpResponse rsp) { CtpLoginInfo = rsp.Item1.AsRspUserLogin; if (CtpLoginInfo != null && CtpConvert.CheckRspInfo(rsp.Item2)) { UserLogin = new RspUserLoginField(); UserLogin.TradingDay = CtpConvert.GetDate(CtpLoginInfo.TradingDay); UserLogin.LoginTime = CtpConvert.GetTime(CtpLoginInfo.LoginTime); UserLogin.UserID = CtpLoginInfo.UserID; UserLogin.SessionID = $"{CtpLoginInfo.FrontID}:{CtpLoginInfo.SessionID}"; UserLogin.Text = string.IsNullOrEmpty(CtpLoginInfo.MaxOrderRef) ? "1" : CtpLoginInfo.MaxOrderRef; _publisher.Post(ConnectionStatus.Logined, UserLogin); DoSettlementInfoConfirm(); } else { SendError(rsp.Item2, nameof(OnRspUserLogin)); _publisher.Post(ConnectionStatus.Disconnected); } }
void IXSpi.ProcessConnectionStatus(ConnectionStatus status, RspUserLoginField login) { StatusChanged?.Invoke(this, status, login); }