/// <summary> /// 开始拉数据 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public DataInfo Begin(DataParameter parameter) { if (!AuthenticationHelper.AuthServiceHeader()) { LogHelper.Debug(GetType(), "权限校验不通过"); return(null); } LogHelper.Debug(GetType(), "开始准备数据" + LogInfo.ObjectToMessage(parameter)); var dataInfo = new DataInfo(); actionID = Guid.NewGuid().ToString(); dataInfo.ActionId = parameter.Action; dataInfo.DataId = actionID; cache = new AspnetCache(actionID); //todo:根据action取得字符串 var test = @"Testtest"; var processFactory = new DataProcessFactory(); var data = processFactory.ProcessToString(test); var dataCount = (int)Math.Ceiling(data.Length / (double)dataLength); //存于缓存中 cache.Add(DataKey, data); cache.Add(DataCountKey, dataCount); dataInfo.SpliteCount = dataCount; return(dataInfo); }
public void DataProcessFactoryCheckDataSegment() { var factory = new DataProcessFactory(); var se = factory.BuildDataSegment(0, "1", 1000, 1, "H4sIAAAAAAAEAONnZGBgqAAAyMMqIwYAAAA="); var x = factory.CheckDataSegment(se); Assert.IsTrue(x); }
public void DataProcessFactoryCheckStringProcess() { var factory = new DataProcessFactory(); var txt = "x"; var ptxt = factory.ProcessToString(txt); var dtxt = factory.ProcessToObject <string>(ptxt); Assert.AreEqual(txt, dtxt); }
/// <summary> /// 初始化 /// </summary> public PullDataClient() { DataService = AppCtx.Resolve<IPullDataService>("PullService"); if (DataService == null) { LogHelper.Debug(GetType(), "获取接口失败"); throw new InvalidCastException("获取接口IPullDataService失败"); } ProcessFactory = new DataProcessFactory(); }
public void DataProcessFactoryByteProcess() { var factory = new DataProcessFactory(); var txt = "halkfjklsdfjowjflskdfjlsfjls"; var bytes = StringByteConver.ToByte(txt); var ptxt = factory.Process(bytes); var dtxt = factory.DeProcess(ptxt); var result = StringByteConver.ToString(dtxt); Assert.AreEqual(txt, result); }
public void DataProcessFactoryTest() { var factory = new DataProcessFactory(); var info = new DataInfo(); info.ActionId = 1; info.DataId = "sss"; info.SpliteCount = 10; var bytes = factory.ProcessToString(info); var info2 = factory.ProcessToObject <DataInfo>(bytes); Assert.AreEqual(info.DataId, info2.DataId); }
/// <summary> /// 拉数据 /// </summary> /// <param name="dataid"></param> /// <param name="index"></param> /// <returns></returns> public DataSegment Pull(string dataid, int index) { if (!AuthenticationHelper.AuthServiceHeader()) { LogHelper.Debug(GetType(), "权限校验不通过"); return(null); } LogHelper.Debug(GetType(), string.Format("数据ID:{0},索引:{1}", dataid, index), "拉数据"); if (cache == null) { cache = new AspnetCache(actionID); } var dataCount = cache.Get <int>(DataCountKey); var content = cache.Get <string>(DataKey); var processFactory = new DataProcessFactory(); var dataSegment = processFactory.BuildDataSegment(index, dataid, dataLength, dataCount, content); return(dataSegment); }
public void Push(DataSegment segment) { if (!AuthenticationHelper.AuthServiceHeader()) { LogHelper.Debug(GetType(), "权限校验不通过"); throw new SoapHeaderException(); } LogHelper.Debug(GetType(), "推送数据", LogInfo.ObjectToMessage(segment)); if (cache == null) { cache = new AspnetCache(actionID); } var processFactory = new DataProcessFactory(); if (processFactory.CheckDataSegment(segment)) { cache.Add(string.Format("{0}.{1}", segment.DataId, segment.Index), segment.DataString); } }
public DataResult End(string dataid, bool abandon) { if (!AuthenticationHelper.AuthServiceHeader()) { LogHelper.Debug(GetType(), "权限校验不通过"); return(null); } LogHelper.Debug(GetType(), string.Format("推送数据结束,数据ID为:{0},是否取消:{1}", dataid, abandon)); if (abandon) { return(null); } if (cache == null) { cache = new AspnetCache(actionID); } var processFactory = new DataProcessFactory(); var dataInfo = cache.Get <DataInfo>(DataKey); var dataResult = new DataResult(); var datalength = dataLength * dataInfo.SpliteCount; var sb = new StringBuilder(datalength); var success = true; for (int i = 0; i < dataInfo.SpliteCount; i++) { var data = cache.Get <string>(string.Format("{0}.{1}", dataid, i)); if (string.IsNullOrEmpty(data)) { success = false; break; } else { sb.Append(data); } } if (success) { //解压 var content = processFactory.ProcessToObject <string>(sb.ToString()); var handler = AppCtx.Resolve <IDataHandler>(actionID); if (!handler.Validation(0, int.Parse(actionID))) { //TODO: 无法通过校验,不进行处理 } // handler.ProcessData<object>() //todo:推送完成 #region 把内容写下来 var fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".log"); FileStream fs = new FileStream(fileName, FileMode.Append); StreamWriter streamWriter = new StreamWriter(fs); streamWriter.BaseStream.Seek(0, SeekOrigin.End); streamWriter.Write(content); streamWriter.WriteLine(DateTime.Now.ToString(CultureInfo.CurrentCulture)); streamWriter.Flush(); streamWriter.Close(); FileInfo fileInfo = new FileInfo(fileName); LogHelper.Debug(GetType(), string.Format("保存成文件,路径为:{0}", fileInfo.FullName), LogInfo.ObjectToMessage(fileInfo)); #endregion dataResult.DataId = dataInfo.DataId; dataResult.Action = dataInfo.ActionId; cache.Add(ContentKey, dataResult); cache.Clear(); cache = null; return(dataResult); } else { cache.Clear(); cache = null; return(null); } }