public ListEntity <PayOrderDetail> GetPayOrderDetails(string payOrderCode, string currentPageNumber) { try { string url = ModelFactory.Url + "/companyInterface/pay/getPayOrderDetail"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "payOrderCode", payOrderCode }, { "currentPageNumber", currentPageNumber } }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon <PayOrderDetail>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(GetPayOrderDetails(payOrderCode, currentPageNumber)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public void Execute(IJobExecutionContext context) { var dbName = ConfigurationManager.AppSettings["ReductDbName"]; var openAway = ConfigurationManager.AppSettings["ReductOpenAway"]; var dbName_Data = ConfigurationManager.AppSettings["ReductDataPath"]; var dbName_Log = ConfigurationManager.AppSettings["ReductLogPath"]; var movePath = ConfigurationManager.AppSettings["ReductMovePath"]; IReductSqlBLL bll = new ReductSqlBLL(); try { var dbFile = FileOperate.GetLatestFileTimeInfo(openAway, ".bak"); if (dbFile != null) { FlashLogger.Info(string.Format("最新备份文件[{0}],\r\n数据库[{1}]\r\n正在还原中...", dbFile.FullName, dbName)); FlashLogger.Info(bll.ReductGo(dbName, dbFile.FullName)); FlashLogger.Info(string.Format("开始移动数据库备份文件,\r\n[{0}]\r\n --->\r\n[{1}]", dbFile.FullName, movePath + dbFile.Name)); FileOperate.FileMove(dbFile.FullName, movePath + dbFile.Name); FlashLogger.Info("删除目录下多余的备份文件!"); FileOperate.DeleteFolderFiles(openAway); FlashLogger.Info("备份文件还原完毕!"); } else { FlashLogger.Error("未找到数据库备份文件,还原失败"); } } catch (Exception ex) { FlashLogger.Error("ReductSqlJob_Execute:" + ex.Message); } }
public void Execute(IJobExecutionContext context) { ICompanySCBLL companyBll = new CompanySCBLL(); List <Company> companyList = null; DateTime dateTimeM = DateTime.Now; FlashLogger.Error(string.Format("下载生产企业信息【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); while (dateTimeM > Convert.ToDateTime("2016-03-01")) { var listEntity = companyBll.GetCompanys("", dateTimeM.ToString("yyyy-MM"), "1"); if (listEntity == null) { break; } companyList = listEntity.DataList; if (companyList != null && companyList.Count > 0) { for (int i = 1; i <= listEntity.TotalPageCount; i++) { companyBll.AddCompanys(companyList); FlashLogger.Warn(string.Format("{0} : 第{1}页/共{2}页 成功下载 {3} 条生产企业信息.【{4}】", dateTimeM.ToString("yyyy-MM"), i, listEntity.TotalPageCount, companyList.Count, System.Threading.Thread.CurrentThread.ManagedThreadId)); companyList = companyBll.GetCompanys("", dateTimeM.ToString("yyyy-MM"), (i + 1).ToString()).DataList; } } dateTimeM = dateTimeM.AddMonths(-1); } FlashLogger.Error(string.Format("下载完毕【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); }
//starts the sender algorithm private void DoStart() { senderThread = new Thread(() => { try { while (!stopped) { //wait until explicitely (re)started startLatch.Wait(); paused = false; SenderAlgorithm(); } } catch (IOException ex) { FlashLogger.Error("", ex); } FlashLogger.Info("STOPPING SENDER for " + session); }); senderThread.Name = UDTThreadFactory.Instance.NewThreadName(); senderThread.IsBackground = true; senderThread.Start(); }
public ListEntity <Procurecatalog> CheckExist(string procureCatalogInfo) { try { string url = ModelFactory.Url + "/companyInterface/drug/procurecatalog/checkExist"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "procureCatalogInfo", procureCatalogInfo }, }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon <Procurecatalog>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(CheckExist(procureCatalogInfo)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ListEntity <Order> GetOrders(DateTime startTime, DateTime endTime, string currentPageNumber) { try { string url = ModelFactory.Url + "/companyInterface/drug/purchaseOrder/getOrder"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "startTime", startTime.ToString("yyyy-MM-dd hh:mm:ss") }, { "endTime", endTime.ToString("yyyy-MM-dd hh:mm:ss") }, { "currentPageNumber", currentPageNumber } }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon <Order>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(GetOrders(startTime, endTime, currentPageNumber)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ReturnEntity <ErrorListEntity_Order, Order> Response(string orderDetailInfo) { try { string url = ModelFactory.Url + "/companyInterface/drug/purchaseOrder/response"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "orderDetailInfo", orderDetailInfo }, }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ReturnEntityCommon <ErrorListEntity_Order, Order>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(Read(orderDetailInfo)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ReturnEntity <ErrorListEntity_Sale, Sale> AddSale(string saleInfo) { try { string url = ModelFactory.Url + "/companyInterface/drug/saleList/addSale"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "saleInfo", saleInfo }, }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ReturnEntityCommon <ErrorListEntity_Sale, Sale>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(AddSale(saleInfo)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ListEntity <WareHouse> GetWareHouses(string distributeInfo, string currentPageNumber) { try { string url = ModelFactory.Url + "/companyInterface/drug/wareHouse/getWareHouse"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "distributeInfo", distributeInfo }, { "currentPageNumber", currentPageNumber } }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon <WareHouse>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(GetWareHouses(distributeInfo, currentPageNumber)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ListEntity <Company> GetCompanys(string companyIds, string month, string currentPageNumber) { try { string url = ModelFactory.Url + "/companyInterface/companySc/getCompanySc"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "companyIds", companyIds }, { "month", month }, { "currentPageNumber", currentPageNumber } }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon <Company>().CheckReturnCode(result, out int rcode); if (rcode == 0) { return(GetCompanys(companyIds, month, currentPageNumber)); } return(list); } catch (Exception ex) { FlashLogger.Error(ex.Message); return(null); } }
public ListEntity<Hospital> GetHospitals(string hospitalIds, string month, string currentPageNumber) { try { string url = ModelFactory.Url + "/companyInterface/hospital/getHospital"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "hospitalIds", hospitalIds }, { "month", month }, { "currentPageNumber", currentPageNumber } }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon<Hospital>().CheckReturnCode(result, out int rcode); if (rcode == 0) return GetHospitals(hospitalIds, month, currentPageNumber); return list; } catch (Exception ex) { FlashLogger.Error(ex.Message); return null; } }
private static void Test() { string userCommand = ""; while (userCommand != "exit") { IConnectionBLL connectionBll = new ConnectionBLL(); var baseEntity = connectionBll.TestConnection(); FlashLogger.Error("药械平台接口连接测试"); WriteLine(baseEntity.ResultJson); IAccessTokeBLL accessTokeBll = new AccessTokeBLL(); var accessTokenEntity = accessTokeBll.GetAccessTokenEntity(); if (accessTokenEntity == null || string.IsNullOrEmpty(accessTokenEntity.AccessToken)) { FlashLogger.Error("有效令牌凭据不存在,重新获取令牌"); accessTokenEntity = accessTokeBll.GetToken(); accessTokeBll.SaveToken(accessTokenEntity); } else { FlashLogger.Error("从数据库成功获取有效令牌凭据"); } WriteLine(accessTokenEntity.ResultJson); //WriteLine(string.Format("过期时间:{0}", // ((DateTime)accessTokenEntity.CurrentTime).AddSeconds((double)accessTokenEntity.ExpiresIn).ToString("yyyy-MM-dd HH:mm"))); IProcurecatalogBLL procurecatalogBll = new ProcurecatalogBLL(); var procurecatalogIdList = new List <object> { new { procurecatalogId = 1 }, new { procurecatalogId = 2 }, new { procurecatalogId = 3 } }; var procurecatalogIds = JsonConvert.SerializeObject(new { list = procurecatalogIdList }); List <Entity.QuartzLog.Procurecatalog> procurecatalogList = null; DateTime dateTimeM = DateTime.Now; FlashLogger.Error("下载商品信息"); while (dateTimeM > Convert.ToDateTime("2017-09-01")) { var listEntity = procurecatalogBll.GetProcurecatalogs("", dateTimeM.ToString("yyyy-MM"), "1"); procurecatalogList = listEntity.DataList; if (procurecatalogList != null && procurecatalogList.Count > 0) { for (int i = 1; i <= listEntity.TotalPageCount; i++) { //procurecatalogBll.AddProcurecatalogs(procurecatalogList); FlashLogger.Fatal(string.Format("{0} : 第{1}页/共{2}页 成功下载 {3} 条商品信息.", dateTimeM.ToString("yyyy-MM"), i, listEntity.TotalPageCount, procurecatalogList.Count)); procurecatalogList = procurecatalogBll.GetProcurecatalogs("", dateTimeM.ToString("yyyy-MM"), (i + 1).ToString()).DataList; } } dateTimeM = dateTimeM.AddMonths(-1); } Console.WriteLine("请输入您的指令"); userCommand = Console.ReadLine(); } Console.ReadKey(); }
public void TestWriteLog() { FlashLogger.Instance().Register(); FlashLogger.Debug("Debug"); FlashLogger.Debug("Debug", new Exception("testexception")); FlashLogger.Info("Info"); FlashLogger.Fatal("Fatal"); FlashLogger.Error("Error"); FlashLogger.Warn("Warn", new Exception("testexception")); }
//http://www.cnblogs.com/emrys5/p/6693454.html static void Main(string[] args) { FlashLogger.Instance().Register(); FlashLogger.Debug("Debug"); FlashLogger.Debug("Debug", new Exception("testexception")); FlashLogger.Info("Info"); FlashLogger.Fatal("Fatal"); FlashLogger.Error("Error"); FlashLogger.Warn("Warn", new Exception("testexception")); }
public ActionResult Index() { ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; FlashLogger.Debug("Debug"); FlashLogger.Debug("Debug", new Exception("testexception")); FlashLogger.Info("Info"); FlashLogger.Fatal("Fatal"); FlashLogger.Error("Error"); FlashLogger.Warn("Warn", new Exception("testexception")); return(View()); }
public static void Error(object message) { switch (LogEngineType) { case LogEngineTypeEnum.DefaultLogger: DefaultLogger.Error(message); break; case LogEngineTypeEnum.FlashLogger: FlashLogger.Error(message); break; } }
/** * re-submits an entry from the sender loss list * @param entry */ protected void HandleResubmit(long seqNumber) { try { //retransmit the packet and remove it from the list DataPacket pktToRetransmit = null; sendBuffer.TryGetValue(seqNumber, out pktToRetransmit); if (pktToRetransmit != null) { endpoint.DoSend(pktToRetransmit); statistics.incNumberOfRetransmittedDataPackets(); } }catch (Exception e) { FlashLogger.Error("", e); } }
public void Submit() { if (ThreadLocked) { return; } FlashLogger.Info(string.Format("MaxId:{0}", MaxId)); List <SaleBill> saleBills = dalMySql.GetTopFive(MaxId); if (saleBills.Count > 0) { ThreadLocked = true; FlashLogger.Warn("$$$ [ ThreadLocked ] $$$"); MaxId = saleBills[saleBills.Count - 1].SaleBillID; saleBills.ForEach(s => { var insMsg = dalSqlServer.InsertBill(s); if (insMsg.IndexOf("单据写入失败") > -1) { FlashLogger.Error(insMsg); MaxId = 0; ThreadLocked = false; FlashLogger.Warn("$$$ [ ThreadUnLocked ] $$$"); return; } else { FlashLogger.Info(insMsg); if (dalMySql.SetInvalid(s.SaleBillID) > 0) { FlashLogger.Info("CacheID:" + s.SaleBillID); } else { FlashLogger.Error("ErrorCacheID:" + s.SaleBillID); } } }); ThreadLocked = false; FlashLogger.Warn("$$$ [ ThreadUnLocked ] $$$"); } else { FlashLogger.Warn("$$$ [ Heartbeat - ThreadUnLocked ] $$$"); } }
public override void OnException(ExceptionContext filterContext) { string controllerName = (string)filterContext.RouteData.Values["controller"]; string actionName = (string)filterContext.RouteData.Values["action"]; HandleErrorInfo info = new HandleErrorInfo(filterContext.Exception, controllerName, actionName); HttpRequestBase request = filterContext.RequestContext.HttpContext.Request; string broser = request.Browser.Browser; string broserVersion = request.Browser.Version; string system = request.Browser.Platform; string errorBaseInfo = $"Broser={broser},broserVersion={broserVersion},system={system},action={actionName},controller={controllerName}"; //写入日志 FlashLogger.Error(errorBaseInfo, filterContext.Exception); if (!filterContext.ExceptionHandled) { if (filterContext.HttpContext.IsCustomErrorEnabled) { filterContext.HttpContext.Response.Clear(); HttpException httpex = filterContext.Exception as HttpException; if (httpex != null) { filterContext.HttpContext.Response.StatusCode = httpex.GetHttpCode(); } else { filterContext.HttpContext.Response.StatusCode = 500; } filterContext.Result = new ViewResult { ViewName = "/Views/Shared/Error.cshtml", ViewData = new ViewDataDictionary <HandleErrorInfo>(info) }; filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; } else { //当customErrors=Off时 //当customErrors = RemoteOnly,且在本地调试时 filterContext.HttpContext.Response.Redirect("/ErrorPage.html"); filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; } } base.OnException(filterContext); }
public void Start(bool serverSocketModeEnabled) { serverSocketMode = serverSocketModeEnabled; //start receive thread Thread receive = new Thread(() => { try { DoReceive(); } catch (Exception ex) { FlashLogger.Error("", ex); } }); receive.Name = "Recv"; receive.IsBackground = true; receive.Start(); }
public string Read([FromBody] string value) { ReturnEntity <ErrorListEntity_Order, Order> checkList = null; try { checkList = purchaseOrderBLL.Read(value); if (checkList != null) { return(JsonConvert.SerializeObject(new { ResultCode = 1, ResultMsg = "Success", ResultData = checkList })); } else { return(JsonConvert.SerializeObject(new { ResultCode = 0, ResultMsg = "Fail", ResultData = checkList })); } } catch (Exception ex) { FlashLogger.Error(string.Format("api/order/read\r\n{0}\r\n{1}", ex.Message, value)); return(JsonConvert.SerializeObject(new { ResultCode = 0, ResultMsg = string.Format("Error:{0}", ex.Message), ResultData = checkList })); } }
//starts the sender algorithm private void Start() { receiverThread = new Thread(() => { try { nextACK = Util.getCurrentTime() + ackTimerInterval; nextNAK = (long)(Util.getCurrentTime() + 1.5 * nakTimerInterval); nextEXP = Util.getCurrentTime() + 2 * expTimerInterval; ackInterval = session.CongestionControl.GetAckInterval(); while (!stopped) { ReceiverAlgorithm(); } } catch (Exception ex) { FlashLogger.Error("", ex); } FlashLogger.Info("STOPPING RECEIVER for " + session); }); receiverThread.Name = UDTThreadFactory.Instance.NewThreadName(); receiverThread.IsBackground = true; receiverThread.Start(); }
public void Execute(IJobExecutionContext context) { IHospitalBLL hospitalBll = new HospitalBLL(); List <Hospital> hospitalList = null; DateTime dateTimeM = DateTime.Now; FlashLogger.Error(string.Format("下载医疗机构信息【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); while (dateTimeM > Convert.ToDateTime("2016-03-01")) { var listEntity = hospitalBll.GetHospitals("", dateTimeM.ToString("yyyy-MM"), "1"); if (listEntity == null) { break; } hospitalList = listEntity.DataList; if (hospitalList != null && hospitalList.Count > 0) { for (int i = 1; i <= listEntity.TotalPageCount; i++) { hospitalBll.AddHospitals(hospitalList); var log = string.Format("{0} : 第{1}页/共{2}页 成功下载 {3} 条医疗机构信息.【{4}】", dateTimeM.ToString("yyyy-MM"), i, listEntity.TotalPageCount, hospitalList.Count, System.Threading.Thread.CurrentThread.ManagedThreadId); FlashLogger.Warn(log); hospitalList = hospitalBll.GetHospitals("", dateTimeM.ToString("yyyy-MM"), (i + 1).ToString()).DataList; } } dateTimeM = dateTimeM.AddMonths(-1); } FlashLogger.Error(string.Format("下载完毕【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); //测试 var hospitalIdList = new List <object> { new { hospitalId = "12319" }, new { hospitalId = "2" }, new { hospitalId = "10679" } }; var hospitalIds = JsonConvert.SerializeObject(new { list = hospitalIdList }); var checkList = hospitalBll.CheckExist(hospitalIds); }
public string Maintenance([FromBody] string value) { ReturnEntity <ErrorListEntity_Return, Return> checkList = null; try { checkList = returnBLL.Response(value); if (checkList != null) { return(JsonConvert.SerializeObject(new { ResultCode = 1, ResultMsg = "Success", ResultData = checkList })); } else { return(JsonConvert.SerializeObject(new { ResultCode = 0, ResultMsg = "Fail", ResultData = checkList })); } } catch (Exception ex) { FlashLogger.Error(string.Format("api/return/maintenance\r\n{0}\r\n{1}", ex.Message, value)); return(JsonConvert.SerializeObject(new { ResultCode = 0, ResultMsg = string.Format("Error:{0}", ex.Message), ResultData = checkList })); } }
public void Execute(IJobExecutionContext context) { IProcurecatalogBLL procurecatalogBll = new ProcurecatalogBLL(); List <Procurecatalog> procurecatalogList = null; DateTime dateTimeM = DateTime.Now; FlashLogger.Error(string.Format("下载商品信息【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); while (dateTimeM > Convert.ToDateTime("2016-03-01")) { var listEntity = procurecatalogBll.GetProcurecatalogs("", dateTimeM.ToString("yyyy-MM"), "1"); if (listEntity == null) { break; } procurecatalogList = listEntity.DataList; if (procurecatalogList != null && procurecatalogList.Count > 0) { for (int i = 1; i <= listEntity.TotalPageCount; i++) { procurecatalogBll.AddProcurecatalogs(procurecatalogList); FlashLogger.Warn(string.Format("{0} : 第{1}页/共{2}页 成功下载 {3} 条商品信息.【{4}】", dateTimeM.ToString("yyyy-MM"), i, listEntity.TotalPageCount, procurecatalogList.Count, System.Threading.Thread.CurrentThread.ManagedThreadId)); procurecatalogList = procurecatalogBll.GetProcurecatalogs("", dateTimeM.ToString("yyyy-MM"), (i + 1).ToString()).DataList; } } dateTimeM = dateTimeM.AddMonths(-1); } FlashLogger.Error(string.Format("下载完毕【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); //测试 var procurecatalogIdList = new List <object> { new { procurecatalogId = 12319 }, new { procurecatalogId = 2 }, new { procurecatalogId = 10679 } }; var procurecatalogIds = JsonConvert.SerializeObject(new { list = procurecatalogIdList }); var checkList = procurecatalogBll.CheckExist(procurecatalogIds); }
public void Execute(IJobExecutionContext context) { IPurchaseOrderBLL orderBll = new PurchaseOrderBLL(); List <Order> orderList = null; DateTime dateTimeM = DateTime.Now; FlashLogger.Error(string.Format("下载采购订单【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); while (dateTimeM > Convert.ToDateTime("2016-03-01")) { var listEntity = orderBll.GetOrders(TimeHelper.GetStartDateTime(dateTimeM), TimeHelper.GetEndDateTime(dateTimeM), "1"); if (listEntity == null) { break; } orderList = listEntity.DataList; if (orderList != null && orderList.Count > 0) { for (int i = 1; i <= listEntity.TotalPageCount; i++) { orderBll.AddOrders(orderList); FlashLogger.Warn(string.Format("{0} : 第{1}页/共{2}页 成功下载 {3} 条采购订单信息.【{4}】", dateTimeM.ToString("yyyy-MM-dd"), i, listEntity.TotalPageCount, orderList.Count, System.Threading.Thread.CurrentThread.ManagedThreadId)); orderList = orderBll.GetOrders(TimeHelper.GetStartDateTime(dateTimeM), TimeHelper.GetEndDateTime(dateTimeM), (i + 1).ToString()).DataList; } } //else //{ // FlashLogger.Warn(string.Format("{0} : 无采购订单信息.【{1}】", dateTimeM.ToString("yyyy-MM-dd"), // System.Threading.Thread.CurrentThread.ManagedThreadId)); //} dateTimeM = dateTimeM.AddDays(-1); //System.Threading.Thread.Sleep(3000); } FlashLogger.Error(string.Format("采购订单下载完毕【{0}】", System.Threading.Thread.CurrentThread.ManagedThreadId)); //测试 }
public ListEntity<Hospital> CheckExist(string hospitalInfo) { try { string url = ModelFactory.Url + "/companyInterface/hospital/checkExist"; var postVars = new NameValueCollection { { "accessToken", AccessTokeBLL.AccessToken.AccessToken }, { "hospitalInfo", hospitalInfo }, }; string result = WebClientHttp.Post(url, postVars); FlashLogger.Info(result); var list = new ListEntityCommon<Hospital>().CheckReturnCode(result, out int rcode); if (rcode == 0) return CheckExist(hospitalInfo); return list; } catch (Exception ex) { FlashLogger.Error(ex.Message); return null; } }
public override void Received(IUDTPacket packet, Destination peer) { lastPacket = packet; if (packet is ConnectionHandshake) { ConnectionHandshake connectionHandshake = (ConnectionHandshake)packet; FlashLogger.Info("Received " + connectionHandshake); if (State <= ready) { destination.SocketID = connectionHandshake.SocketID; if (State <= handshaking) { State = handshaking; } try { HandleHandShake(connectionHandshake); n_handshake++; try { //理论上应该先检验cookie State = ready; socket = new UDTSocket(endPoint, this); cc.Init(); } catch (Exception uhe) { //session is invalid FlashLogger.Error("", uhe); State = invalid; } } catch (IOException ex) { //session invalid FlashLogger.Warn("Error processing ConnectionHandshake", ex); State = invalid; } return; } else { //cd 回复 try { HandleHandShake(connectionHandshake); } catch (IOException e) { } } } else if (packet is KeepAlive) { socket.GetReceiver().ResetEXPTimer(); active = true; return; } if (State == ready) { active = true; if (packet is KeepAlive) { //nothing to do here return; } else if (packet is Shutdown) { try { socket.GetReceiver().Stop(); } catch (IOException ex) { FlashLogger.Warn("", ex); } State = shutdown; Console.WriteLine("SHUTDOWN ***"); active = false; FlashLogger.Info("Connection shutdown initiated by the other side."); return; } else { try { Console.WriteLine("收到数据包"); if (packet.ForSender()) { socket.GetSender().Receive(packet); } else { socket.GetReceiver().Receive(packet); } } catch (Exception ex) { //session invalid FlashLogger.Error("", ex); State = invalid; // setState(invalid); } } return; } }
public void Run() { try { FlashLogger.Info("Handling request from " + socket.GetSession().Destination); UDTInputStream intStream = socket.GetInputStream(); UDTOutputStream outStream = socket.GetOutputStream(); byte[] readBuf = new byte[32768]; //read file name info while (intStream.Read(readBuf) == 0) { Thread.Sleep(100); } //how many bytes to read for the file name byte[] len = new byte[4]; //bb.get(len); Array.Copy(readBuf, 0, len, 0, 4);//文件名称长度 if (verbose) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < len.Length; i++) { sb.Append((len[i]).ToString()); sb.Append(" "); } Console.WriteLine("[SendFile] name length data: " + sb.ToString()); } long length = Decode(len, 0); if (verbose) { Console.WriteLine("[SendFile] name length : " + length); } byte[] fileName = new byte[(int)length]; //读取文件名称 Array.Copy(readBuf, 4, fileName, 0, fileName.Length); FileInfo file = new FileInfo(Encoding.UTF8.GetString(fileName));//兼容java Console.WriteLine("[SendFile] File requested: '" + file.FullName + "'"); FileStream fis = null; try { long size = file.Length; Console.WriteLine("[SendFile] File size: " + size); //send size info outStream.Write(Encode64(size)); //先写入大小 outStream.Flush(); //传输完成 long start = DateTime.Now.Ticks; fis = new FileStream(file.FullName, FileMode.Open); CopyFile(fis, outStream, size, false); Console.WriteLine("[SendFile] Finished sending data."); long end = DateTime.Now.Ticks; Console.WriteLine(socket.GetSession().Statistics.toString()); double rate = 1000.0 * size / 1024 / 1024 / (end - start); Console.WriteLine("[SendFile] Rate: " + rate.ToString(format) + " MBytes/sec. " + (8 * rate).ToString(format) + " MBit/sec."); } finally { socket.GetSender().Stop(); if (fis != null) { fis.Close(); } } FlashLogger.Info("Finished request from " + socket.GetSession().Destination); } catch (Exception ex) { FlashLogger.Error(ex.Message); } }
public override void Received(IUDTPacket packet, Destination peer) { lastPacket = packet; if (packet is ConnectionHandshake) { ConnectionHandshake hs = (ConnectionHandshake)packet; FlashLogger.Info("Received connection handshake from " + peer + "\n" + hs); if (State != ready) { if (hs.ConnectionType == 1) { try { //TODO validate parameters sent by peer // long peerSocketID = hs.SocketID; // DestinationID = peerSocketID; // destination(peerSocketID); destination.SocketID = hs.SocketID; SendConfirmation(hs); } catch (Exception ex) { FlashLogger.Warn("Error creating socket", ex); State = invalid; } return; } else { try { //TODO validate parameters sent by peer //理论上这里是getConnectionType==-1 // long peerSocketID = hs.getSocketID(); // destination.SetSocketID(peerSocketID); // setState(ready); destination.SocketID = hs.SocketID; State = ready; Thread.Sleep(50); //多个握手序列,使用接收的第一个 this.initialSequenceNumber = hs.InitialSeqNo;//cd 必须重置 socket = new UDTSocket(endPoint, this); } catch (Exception ex) { FlashLogger.Warn("Error creating socket", ex); State = invalid; } return; } } } if (State == ready) { if (packet is Shutdown) { State = shutdown; active = false; FlashLogger.Info("Connection shutdown initiated by the other side."); return; } active = true; try { if (packet.ForSender()) { socket.GetSender().Receive(lastPacket); } else { socket.GetReceiver().Receive(lastPacket); } } catch (Exception ex) { //session is invalid FlashLogger.Error("Error in " + toString(), ex); //setState(invalid); State = invalid; } return; } }