private void btn_submit_Click(object sender, EventArgs e) { ConsultRequest consultRequest = new ConsultRequest(); consultRequest.ConvertFromSuggests(list); string reslut = RemoteWorker.postCommit(consultRequest); CommonResponse response = TranslationWorker.ConvertStringToEntity <CommonResponse>(reslut); if (response != null) { if (response.status != null) { if (response.status.ToString() == "200") { if (MessageBox.Show("提交征询意见成功") == DialogResult.OK) { this.Close(); } } else { MessageBox.Show("提交征询意见失败。原因:" + response.errmsg); } } else { MessageBox.Show("提交征询意见失败。原因:" + response.errmsg); } } }
private void btn_login_Click(object sender, EventArgs e) { if (cbb_user.Text.Trim() == string.Empty || txt_password.Text.Trim() == string.Empty) { MessageBox.Show("用户名密码不能为空"); return; } if (getToken(cbb_user.Text.Trim(), txt_password.Text.Trim()) == false) { return; } if (login(cbb_user.Text.Trim(), txt_password.Text.Trim())) { Global.user.Name = cbb_user.Text.Trim(); Global.user.Password = txt_password.Text.Trim(); if (Global.online)//如果登陆成功且联网状态,获取用户信息、检查用户是否首次登陆(首次登陆要预下载法规)、远程法规列表、设置列表 { RemoteWorker.getUserInfo(); RemoteWorker.getSetResponse(); RemoteWorker.getLawResponse(); checkUserPreload(); } if (cb_remindPwd.Checked) { string userId = cbb_user.Text.Trim(); string password = txt_password.Text.Trim(); ConfigWorker.SetConfigValue(userId, password); } db.saveUser(Global.user); LibraryList listForm = new LibraryList(); listForm.Show(); this.Hide(); } }
public void RemoteWorker_Validate_With_MultipleTask() { var identifier = Guid.NewGuid().ToString(); using (new ExclusiveBlock(identifier)) { using (var localProcess = new LocalProcessHost(new TcpListenerPortProvider(), identifier)) { using (IWorker runnerHost = new RemoteWorker(localProcess)) { string[] domains = { "https://google.fr/", "https://google.ca/", "https://google.com/" }; for (int index = 0; index < domains.Length; index++) { var domain = domains[index]; var remoteTask = new RemoteTask() { BrowserSize = new Size(1366, 768), Url = domain, Timeout = TimeSpan.FromSeconds(30) }; remoteTask.SetTrigger(new WindowLoadTrigger(TimeSpan.FromSeconds(0))); remoteTask.SetCaptureZone(new VisibleScreen()); var taskResult = runnerHost.PerformTask(remoteTask); Assert.IsNotNull(taskResult.PayLoad); } } } } }
public void RemoteWorker_Validate_With_SimpleHttps() { var identifier = Guid.NewGuid().ToString(); using (new ExclusiveBlock(identifier)) { using (var localProcess = new LocalProcessHost(new TcpListenerPortProvider(), identifier)) { using (IWorker runnerHost = new RemoteWorker(localProcess)) { var remoteTask = new RemoteTask() { BrowserSize = new Size(1366, 768), Url = "https://msdn.microsoft.com/fr-fr", Timeout = TimeSpan.FromSeconds(30) }; remoteTask.SetTrigger(new WindowLoadTrigger(TimeSpan.FromSeconds(0))); remoteTask.SetCaptureZone(new VisibleScreen()); var taskResult = runnerHost.PerformTask(remoteTask); Assert.IsNotNull(taskResult.PayLoad); } } } }
private void checkUserPreload() { User user = db.getUserById(Global.user.Id); if (user != null) { if (user.Preload != "1") { List <string> lawIds = RemoteWorker.getPreloadLaw();//获取预下载的法规id列表 lawIds = new List <string>() { }; //todo 预下载接口还未完成,可用后删除此行代码 foreach (string lawId in lawIds) { List <Node> nodes = RemoteWorker.getBookContent(lawId);//依次下载法规及内容,下载完成后,更新法规的下载状态 if (RemoteWorker.getNodeDetail(nodes.Select(n => n.Id).ToList(), downloadImage:true)) { Law law = db.getLawById(lawId); law.isLocal = "1"; law.downloadPercent = 100; law.downloadDate = DateTime.Now.ToString("yyyy-MM-dd"); law.downloadNodeCount = nodes.Count; db.saveLaw(law); } } Global.user.Preload = "1"; } } }
private void downloadWork() { List <Node> nodes = RemoteWorker.getBookContent(law.lawId); int startIndex = law.downloadNodeCount.HasValue ? (int)law.downloadNodeCount + 1 : 1; for (int i = startIndex; i <= nodes.Count; i++) { if (bgw.CancellationPending) { //暂停时记录已下载的章节数量,用于下次登录程序后继续下载;记录下载进度,用于下次登录后显示进度 law.downloadNodeCount = i - 1; law.downloadPercent = (int)(Math.Round(((float)law.downloadNodeCount / (float)nodes.Count), 2) * 100); db.saveLaw(law); return; } else { bgw.ReportProgress(i); downLoadValue = (int)(Math.Round(((float)i / (float)nodes.Count), 2) * 100); RemoteWorker.getNodeDetail(nodes[i - 1].Id); } } bgw.ReportProgress(100); //下载完成后,改变law的islocal状态为1,并将下载进度设置为100 law.downloadPercent = 100; law.downloadNodeCount = nodes.Count; law.isLocal = "1"; db.saveLaw(law); //下载完成后,法规列表、阅读历史列表显示为“从本地库移除” ((LibraryList)parentForm).setLawStateText(typeof(LawListItem), law, "移除"); ((LibraryList)parentForm).setLawStateText(typeof(ViewHistoryListItem), law, "移除"); }
private void btn_submit_Click(object sender, EventArgs e) { Comment newComment = new Comment(); newComment.lawId = lawId; newComment.nodeId = nodeId; newComment.comment_content = rtb_content.Text.Trim(); newComment.comment_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); newComment.userId = Global.user.Id; OpinionCommitRequest opinionRequest = new OpinionCommitRequest(); opinionRequest.ConvertFromComment(newComment); //RemoteWorker CommonResponse response = TranslationWorker.ConvertStringToEntity <CommonResponse>(RemoteWorker.postOpinion(opinionRequest)); if (response != null) { if (response.status.ToString() == "200") { //如果提交成功,在法规正文界面刷新评论 RemoteWorker.getOpinionList(lawView.law.lawId); if (Global.online)// && string.IsNullOrEmpty(law.isLocal)) { ((LawView)lawView).loadComment(reload: true); } if (MessageBox.Show("提交评论成功") == DialogResult.OK) { this.Close(); } } } }
public bool login(string username, string password) { if (Global.online) { return(RemoteWorker.getloginResponse(username, password)); } else { return(db.login(username, password)); } }
public bool getToken(string username, string password) { if (Global.online) { return(RemoteWorker.getTokenResponse(username, password)); } else { return(true); } }
private void LawView_Load(object sender, EventArgs e) { //mh = new Utity.MouseHook(); //mh.SetHook(); //mh.MouseMoveEvent += Mh_MouseMoveEvent; //this.Text += "-"+law.title + " " + law.version; lbl_title.Text = law.title + " " + law.version; lbl_welcome.Text += Global.user.Xm; if (law != null) { //如果在线,且未下载到本地,则从远程获取章节信息,并入库 if (Global.online && "0" == law.isLocal) { List <Node> nodes = RemoteWorker.getBookContent(law.lawId); //获取法规整体章节结构 RemoteWorker.getNodeDetail(nodes.Select(n => n.Id).ToList()); //再获取每个章节的内容 } nodes = db.getNodeByLawId(law.lawId); //绑定关系 tags = NodeWorker.buildRelationFromNode(nodes); bindTagsToDGW(); //绑定树结构 string content = NodeWorker.buildFromNodeContext(NodeTree, nodes); //绑定法规内容 wb.DocumentText = content; SetAutoWrap(true); if (Global.online)// && string.IsNullOrEmpty(law.isLocal)) { //远程获取评论 RemoteWorker.getOpinionList(law.lawId); //加载评论 loadComment(); } //加载文档信息 lawInfo1.law = law; lawInfo1.parentForm = this.parentForm; lawInfo1.fillLawVersion(laws); lawInfo1.fillLawInfo(); lawInfo1.bindState = true; //写入阅读历史 ViewHistory history = new ViewHistory() { Id = law.lawId, LawID = law.lawId, UserID = Global.user.Id, ViewDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; if (db.saveHistory(history)) { ((LibraryList)parentForm).addHistory(history); } } }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Global.user = new Entity.User(); //验证网络是否可用 RemoteWorker.checkInternet(); //启动网络状态监测 NetStateChecker ns = new Utity.NetStateChecker(); Application.Run(new Login()); }
public static string HttpGet(string Url, string postDataStr) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); request.Timeout = 1000 * 30; request.ReadWriteTimeout = 1000 * 30; request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; //request.Headers.Add("X-Appid", Global.Appid); //request.Headers.Add("X-CurTime", UTC.ConvertDateTimeInt(DateTime.Now).ToString()); //request.Headers.Add("X-CheckSum", GetMD5String(Global.Appkey + UTC.ConvertDateTimeInt(DateTime.Now).ToString())); if (Global.token != null) { if ((DateTime.Now - Global.token.tokenTime).Minutes > 120) { if (RemoteWorker.getTokenResponse(Global.user.Name, Global.user.Password)) { } else { MessageBox.Show("Token已超时,重新获取Token失败,系统切换至离线状态"); Global.online = false; return("error"); } } request.Headers.Add("API_TOKEN", Global.token.access_token); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return(retString); } catch (WebException we) { MessageBox.Show("获取数据超时:" + we.Message); Global.online = false; return("error"); } catch (Exception ex) { MessageBox.Show("获取数据失败:" + ex.Message); Global.online = false; return("error"); } }
public Core.GeoRoute GetGeoRoute(Core.RoutePackage task) { RemoteWorker worker = new RemoteWorker(); ORS.MatrixResponse matrixResponse = ORS.ORS.GetMatrix(task).Result; task.matrix = new Core.AdjacencyMatrix(matrixResponse.ToFloat()); Core.Route route = worker.GetRouteSubgraph(task); ORS.DirectionResponse directionResponse = ORS.ORS.GetGeometry(route).Result; Core.GeoRoute geoRoute = new Core.GeoRoute(route, directionResponse.features[0].geometry.ToFloat()); return(geoRoute); }
private void btn_refresh_Click(object sender, EventArgs e) { if (Global.online == false) { MessageBox.Show("离线状态无法手动更新"); return; } int autoUpdateCount = RemoteWorker.getLawResponse(); if (autoUpdateCount > 0)//如果手动刷新更新的法规数量大于0,则重新加载法规列表,将新版本添加到版本下拉中 { ((LibraryList)parentForm).loadLocalLawList(); } ((LibraryList)parentForm).loadUpdateHistoryList(); }
public static string PostJson(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "text/html;charset=utf-8"; //request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); //request.Headers.Add("X-Appid", Global.Appid); //request.Headers.Add("X-CurTime", UTC.ConvertDateTimeInt(DateTime.Now).ToString()); //request.Headers.Add("X-CheckSum", GetMD5String(Global.Appkey+ UTC.ConvertDateTimeInt(DateTime.Now).ToString())); if (Global.token != null) { if ((DateTime.Now - Global.token.tokenTime).Minutes > 120) { if (RemoteWorker.getTokenResponse(Global.user.Name, Global.user.Password)) { } else { MessageBox.Show("Token已超时,重新获取Token失败,系统切换至离线状态"); Global.online = false; return("error"); } } request.Headers.Add("API_TOKEN", Global.token.access_token); } Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8")); myStreamWriter.Write(postDataStr); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return(retString); }
private static void checkNetState(object state) { bool oldState = Global.online; RemoteWorker.checkInternet(); bool newState = Global.online; if (oldState != newState) { if (newState) { MessageBox.Show("检测到网络已连接,切换至联网状态", "网络状态发生变化"); } else { MessageBox.Show("检测到网络已断开,切换至离线状态", "网络状态发生变化"); } } }
//[TestMethod] public void TestRenderOnFreezerJsEventWithSingleWebPageHard() { var rootDirectoryPath = FreezerTestPathSolver.GetDirectory("WebPages"); var hostname = "127.0.0.1"; int port = 25345; // This port is hardcoded. Can be changed if busy using (new ExclusiveBlock("TestRenderOnFreezerJsEventWithSingleWebPageHard")) { RunnerCore.SetupHostAsync(hostname, port, null, "TestRenderOnFreezerJsEventWithSingleWebPageHard"); using (var httpListener = new StaticHttpServer(rootDirectoryPath)) { var url = $"{_httpServer.BoundURL}/Global/verylongpage.html"; //var url = "http://dragonball.wikia.com/wiki/Frieza"; var hostableLocalProcess = new CaptureHostMock() { Hostname = hostname, Port = port }; var trigger = new WindowLoadTrigger(); // new FreezerJsEventTrigger(); var zone = CaptureZone.FullPage; using (IWorker runnerHost = new RemoteWorker(hostableLocalProcess)) { var remoteTask = new RemoteTask() { BrowserSize = new Size(800, 600), Url = url, }; remoteTask.SetTrigger(trigger); remoteTask.SetCaptureZone(zone); var taskResult = runnerHost.PerformTask(remoteTask); File.WriteAllBytes($@"BmpResults/out-{nameof(TestRenderOnFreezerJsEventWithSingleWebPageHard)}.png", taskResult.PayLoad); } } } }
private void btn_search_Click(object sender, EventArgs e) { if (txt_keyword.Text.Trim() != string.Empty) { if (Global.online) { List <string> lawIdList = RemoteWorker.getSearch(txt_keyword.Text.Trim()); ((LibraryList)parentForm).LoadSearchResultLaw(lawIdList); } else { List <string> lawIdList = db.offLineSearch(queryParam, txt_keyword.Text.Trim()); ((LibraryList)parentForm).LoadSearchResultLaw(lawIdList); } } else { ((LibraryList)parentForm).loadLocalLawList();//如果搜索内容为空,则显示全部法规 } }
public void RemoteWorkerIsAbleToPerformNonBlockingMap() { var uri = new Uri("file:///ala.txt"); var mapFunc = new Uri("file:///makota.cs"); var mapLock = new object(); var uriProviderMock = GetSimpleUriProvider(); var storageMock = new Mock<IStorage>(MockBehavior.Strict); storageMock.Setup(s => s.GetFileName(It.IsAny<Uri>())).Returns(string.Empty); storageMock.Setup(s => s.Read(It.IsAny<Uri>())).Returns(string.Empty); var remoteWorkerServiceMock = new Mock<IRemoteWorkerService>(MockBehavior.Strict); remoteWorkerServiceMock.Setup(s => s.Init(It.IsAny<int>())); remoteWorkerServiceMock.Setup(s => s.Map(It.IsAny<Uri>(), It.IsAny<Uri>())).Callback(() => { lock (mapLock) { Monitor.Wait(mapLock); } }); remoteWorkerServiceMock.Setup(s => s.PushFile(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<string>())) .Returns(new Uri("file:///a.txt")); MockerForRemoteWorkerService.Mock = remoteWorkerServiceMock.Object; RemoteWorker<MockerForRemoteWorkerService>.NonBlockingMapAndReduce = true; var worker = new RemoteWorker<MockerForRemoteWorkerService>() { Storage=storageMock.Object }; worker.Init(); worker.Map(uri, mapFunc); Thread.Sleep(10); lock (mapLock) { Monitor.Pulse(mapLock); } remoteWorkerServiceMock.VerifyAll(); }
public void RemoteWorkerWaitsForJoinInRemoteNode() { var joinLock = new object(); var uriProviderMock = GetSimpleUriProvider(); var remoteServiceMock = new Mock<IRemoteWorkerService>(MockBehavior.Strict); remoteServiceMock.Setup(s => s.Init(It.IsAny<int>())); remoteServiceMock.Setup(s => s.TryJoin(It.IsAny<int>(), It.IsAny<Uri>())).Returns(() => { lock (joinLock) { Monitor.Wait(joinLock); } return new string[] { "a" }; }); MockerForRemoteWorkerService.Mock = remoteServiceMock.Object; var worker = new RemoteWorker<MockerForRemoteWorkerService>(); worker.Init(); var joinThread = new Thread(() => { worker.Join(); }); joinThread.Start(); Thread.Sleep(10); joinThread.ThreadState.ShouldBe(ThreadState.WaitSleepJoin); lock (joinLock) { Monitor.Pulse(joinLock); } joinThread.Join(); remoteServiceMock.VerifyAll(); }
public void Start() { try { var localIp = "127.0.0.1"; localEndPoint = new IPEndPoint(IPAddress.Parse(localIp), 11194); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(localEndPoint); connected = true; } catch { Console.WriteLine("NetworkService: init network service failed"); return; } Task.Factory.StartNew(() => { while (connected) { if (listener != null) { listener.Listen(5); var socket = listener.Accept(); //Console.WriteLine("Worker connected"); var worker = new RemoteWorker(socket); Engine.ExecutorService.AddWorker(worker); } } }); }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { XiudingLiShi xdls = new CAAC_LawLibrary.XiudingLiShi(); string xiudingling = string.Empty; //QueryParam param = new QueryParam() { lastVersion = law.lastversion}; //var effectiveDateList = db.getLaws(param).Select(l=>l.effectiveDate); //for (int i = 0; i < effectiveDateList.Count(); i++) //{ // if (i == 0) // { // xiudingling = DateTime.Parse(effectiveDateList.ElementAt(i)).ToString("yyyy年MM月dd日") + "发布"; // } // else // { // xiudingling += DateTime.Parse(effectiveDateList.ElementAt(i)).ToString("yyyy年MM月dd日") + "第" + Global.NumberToChinese(i.ToString()) + "次修订"; // } // xiudingling += Environment.NewLine; //} xiudingling = RemoteWorker.getHistory(law.lawId); xdls.setRtbText(xiudingling); //xdls.setRtbText(law.xiudingling); xdls.Show(this); }
public void RemoteMapWorks() { var fileName = new Uri(string.Format("file:///{0}", Base64.Encode("file1.txt"))); var fileContent = "whatever am i i"; var mapperCodeFileName = new Uri("file:///SampleMapper.cs"); this.storage.Store(fileName, fileContent); TestHelpers.LoadToStorage(@"..\..\..\NetReduce.Core.Tests\SampleMapper.cs", mapperCodeFileName, this.storage); IUriProvider uriProvider = new UriProvider(); uriProvider.Uris.Add(new Uri("http://*****:*****@"c:\temp\netreduce\0", false); var fileNo = workerStorage.ListFiles().Count(); fileNo.ShouldBe(6); }
/// <summary> /// Gets class entity from selected class. /// </summary> /// <exception cref="Exception"> /// Thrown when an exception error condition occurs. /// </exception> /// <param name="TargetProject"> /// Target project. /// </param> /// <param name="NameOfSourceCommand"> /// Name of the source command. /// </param> /// <returns> /// The class entity from selected class. /// </returns> public ClassEntity GetClassEntityFromSelectedClass(Project TargetProject, string NameOfSourceCommand) { // Karl Shifflett in original vb code: // // 'TODO karl you left off here. must ensure that the SL verions is added // 'Dim strSilverlightVersion As String = String.Empty // 'If bolIsSilverlight Then // ' strSilverlightVersion = Me.Application.ActiveDocument.ProjectItem.ContainingProject.Properties.Item("TargetFrameworkMoniker").Value.ToString.Replace("Silverlight,Version=v", String.Empty) // 'End If // // Yes, this portion of code was not implemented. string assemblyPath = GetAssemblyInformation(TargetProject); if (assemblyPath.IsNullOrEmpty()) { // This should never execute since, the menu option would be disabled. // If it does run, there is a programming error. throw new Exception("The project associated with the selected file is either not vb, cs or is blacklisted."); } RemoteWorker remoteWorker = null; RemoteResponse <AssembliesNamespacesClasses> remoteResponse = null; try { var appSetup = new AppDomainSetup() { ApplicationBase = Path.GetDirectoryName(assemblyPath), DisallowApplicationBaseProbing = false, ShadowCopyFiles = "True" }; //++ Secondary Application Domain _secondaryAppDomain = AppDomain.CreateDomain("SecondaryAppDomain", null, appSetup); AppDomain.CurrentDomain.AssemblyResolve += SecondaryAppDomain_AssemblyResolve; //! This creates remoteWorker in a secondary domain, allowing it to run //! in a separate context from the current domain. This separates //! remoteWorker from the rest of the application (VS), so if the //! domain becomes unstable, it can be unloaded without harming the //! current domain. remoteWorker = _secondaryAppDomain.CreateInstanceFromAndUnwrap(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "XamlHelpmeet.ReflectionLoader.dll"), "XamlHelpmeet.ReflectionLoader.RemoteWorker") as RemoteWorker; //+ remoteWorker inherits a MarshalByRefObject. This //+ enables access to objects returned by its //+ methods across domains. if (remoteWorker != null) { var isSilverlight = PtHelpers.IsProjectSilverlight(PtHelpers.GetProjectTypeGuids(TargetProject).Split(';')); // remoteResponse is a helper class that is serialized so it can // wrap objects returned from a secondary (i.e., remote) application // domain. // A problem exists in this call when an object is returned from // the secondary domain that is of a different version than the // same object in the current domain. When that happens an // InvalidCastException is thrown, and remoteResponse will be // null. I think this may occur when XHM is used on its own // assemblies, if the assemblies have been recompiled since // the operating vsix file was produced. In fact it is likely // that the object that is causing the throw is remoteResponse // itself. This might be resolved by freezing the project // that RemoteResponse is in, and compile it only when necessary. // It would make sense also to move the class into the // ReflectionLoader namespace so it is less likely it would // need to be recompiled when other changes are needed in // the solution. remoteResponse = remoteWorker.GetClassEntityFromUserSelectedClass(assemblyPath, isSilverlight, GetProjectReferences(TargetProject)); if (remoteResponse.ResponseStatus != ResponseStatus.Success) { UIUtilities.ShowExceptionMessage("Unable to Reflect Type", String.Format("The following exception was returned. {0}", remoteResponse.CustomMessageAndException), string.Empty, remoteResponse.Exception.ToString()); } } else { UIUtilities.ShowExceptionMessage("Unable To Create Worker", "Can't create Secondary AppDomain RemoteWorker class. CreateInstance and Unwrap methods returned null."); } } catch (FileNotFoundException ex) { UIUtilities.ShowExceptionMessage("File Not Found", String.Format("File not found.{0}{0}Have you built your application?{0}{0}{1}", Environment.NewLine, ex.Message), String.Empty, ex.ToString()); } catch (Exception ex) { UIUtilities.ShowExceptionMessage("Unable To Create Secondary AppDomain RemoteWorker", ex.Message, String.Empty, ex.ToString()); } finally { AppDomain.CurrentDomain.AssemblyResolve -= SecondaryAppDomain_AssemblyResolve; remoteWorker = null; if (_secondaryAppDomain != null) { try { AppDomain.Unload(_secondaryAppDomain); } catch (Exception ex) { UIUtilities.ShowExceptionMessage("AppDomain.Unload Exception", ex.Message, String.Empty, ex.ToString()); } } _secondaryAppDomain = null; } if (remoteResponse == null || remoteResponse.ResponseStatus != ResponseStatus.Success || remoteResponse.Result == null || remoteResponse.Result.Count == 0) { if (remoteResponse == null || remoteResponse.ResponseStatus == ResponseStatus.Success) { UIUtilities.ShowInformationMessage("No Model", "Unable to find a class suitable for this command."); } return(null); } SelectClassFromAssembliesWindow frm = null; // ClassEntity classEntity = null; // Not used in original frm = new SelectClassFromAssembliesWindow(remoteResponse.Result, NameOfSourceCommand); if (!frm.ShowDialog() ?? false) { return(null); } frm.SelectedAssemblyNamespaceClass.ClassEntity.Success = true; if (frm.SelectedAssemblyNamespaceClass.ClassEntity.IsSilverlight) { frm.SelectedAssemblyNamespaceClass.ClassEntity.SilverlightVersion = TargetProject.Properties.Item("TargetFrameworkMoniker").Value.ToString().Replace("Silverlight,Version=v", string.Empty); } return(frm.SelectedAssemblyNamespaceClass.ClassEntity); }
/// <summary> /// Gets class entities for selected project. /// </summary> /// <exception cref="Exception"> /// Thrown when an exception error condition occurs. /// </exception> /// <param name="TargetProject"> /// Target project. /// </param> /// <param name="NameOfSourceCommand"> /// Name of the source command. /// </param> /// <returns> /// The class entities for selected project. /// </returns> public AssembliesNamespacesClasses GetClassEntitiesForSelectedProject(Project TargetProject, string NameOfSourceCommand) { string assemblyPath = GetAssemblyInformation(TargetProject); if (assemblyPath.IsNullOrEmpty()) { throw new Exception("The project associated with the selected file is either not vb, cs or is blacklisted."); } RemoteWorker remoteWorker = null; RemoteResponse <AssembliesNamespacesClasses> remoteResponse = null; try { var appSetup = new AppDomainSetup() { ApplicationBase = Path.GetDirectoryName(assemblyPath), DisallowApplicationBaseProbing = false, ShadowCopyFiles = "True" }; _secondaryAppDomain = AppDomain.CreateDomain("SecondaryAppDomain", null, appSetup); AppDomain.CurrentDomain.AssemblyResolve += SecondaryAppDomain_AssemblyResolve; remoteWorker = _secondaryAppDomain.CreateInstanceFromAndUnwrap(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "XamlHelpmeet.ReflectionLoader.dll"), "XamlHelpmeet.ReflectionLoader.RemoteWorker") as RemoteWorker; if (remoteWorker != null) { var isSilverlight = PtHelpers.IsProjectSilverlight(PtHelpers.GetProjectTypeGuids(TargetProject).Split(';')); remoteResponse = remoteWorker.GetClassEntityFromUserSelectedClass(assemblyPath, isSilverlight, GetProjectReferences(TargetProject)); if (remoteResponse.ResponseStatus != ResponseStatus.Success) { UIUtilities.ShowExceptionMessage("Unable to Reflect Type", "The following exception was returned. " + remoteResponse.CustomMessageAndException, string.Empty, remoteResponse.Exception.ToString()); } else if (remoteResponse.CustomMessage.IsNotNullOrEmpty()) { UIUtilities.ShowInformationMessage("Reflection Error", string.Format("Unable to reflect the following:\r\n\r\n{0}\r\nAt least one other assembly however successfully reflected.", remoteResponse.CustomMessage)); } } else { UIUtilities.ShowExceptionMessage("Unable To Create Worker", "Can't create Secondary AppDomain RemoteWorker class. CreateInstance and Unwrap methods returned null."); } } catch (FileNotFoundException ex) { UIUtilities.ShowExceptionMessage("File Not Found", String.Format("File not found.{0}{0}Have you built your application?{0}{0}{1}", Environment.NewLine, ex.Message), String.Empty, ex.ToString()); } catch (Exception ex) { UIUtilities.ShowExceptionMessage("Unable To Create Secondary AppDomain RemoteWorker", ex.Message, String.Empty, ex.ToString()); } finally { AppDomain.CurrentDomain.AssemblyResolve -= SecondaryAppDomain_AssemblyResolve; remoteWorker = null; if (_secondaryAppDomain != null) { try { AppDomain.Unload(_secondaryAppDomain); } catch (Exception ex) { UIUtilities.ShowExceptionMessage("AppDomain.Unload Exception", ex.Message, String.Empty, ex.ToString()); } } _secondaryAppDomain = null; } if (remoteResponse != null || remoteResponse.ResponseStatus != ResponseStatus.Success) { return(null); } return(remoteResponse.Result); }
/// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name="url">请求后台地址</param> /// <param name="content">Post提交数据内容(utf-8编码的)</param> /// <returns></returns> public static string PostStr(string url, string content) { try { string result = ""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; //req.ContentType = "application/x-www-form-urlencoded"; request.ContentType = "application/json"; //req.Headers.Add("X-Appid", Global.Appid); //req.Headers.Add("X-CurTime", UTC.ConvertDateTimeInt(DateTime.Now).ToString()); //req.Headers.Add("X-CheckSum", GetMD5String(Global.Appkey + UTC.ConvertDateTimeInt(DateTime.Now).ToString())); if (Global.token != null) { if ((DateTime.Now - Global.token.tokenTime).Minutes > 120) { if (RemoteWorker.getTokenResponse(Global.user.Name, Global.user.Password)) { } else { MessageBox.Show("Token已超时,重新获取Token失败,系统切换至离线状态"); Global.online = false; return("error"); } } request.Headers.Add("API_TOKEN", Global.token.access_token); } #region 添加Post 参数 byte[] data = Encoding.UTF8.GetBytes(content); request.ContentLength = data.Length; using (Stream reqStream = request.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)request.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return(result); } catch (WebException we) { MessageBox.Show("提交数据超时" + we.Message); Global.online = false; return("error"); } catch (Exception ex) { MessageBox.Show("提交数据失败" + ex.Message); Global.online = false; return("error"); } }
/// <summary> /// 刷新法规 /// </summary> /// <param name="laws"></param> /// <returns></returns> public bool refreshLaw(List <Law> laws, out int autoUpdateCount) { using (SqliteContext context = new SqliteContext()) { try { int updateLawCount = 0; foreach (Law law in laws.OrderBy(l => l.lawId)) { var currentLaw = context.Law.FirstOrDefault(l => l.lawId == law.lawId && l.userId == Global.user.Id); if (currentLaw == null)//如果没有就新增 { law.userId = Global.user.Id; //如果是更新版本的法规(且法规旧版本已下载至本地),将更新信息保存至自动更新历史记录表,同时自动下载新版本法规内容 var oldDownloadedLaw = context.Law.FirstOrDefault(l => l.lastversion == law.lastversion && l.isLocal == "1" && l.userId == Global.user.Id); if (oldDownloadedLaw != null) { List <Node> nodes = RemoteWorker.getBookContent(law.lawId); RemoteWorker.getNodeDetail(nodes.Select(n => n.Id).ToList()); law.isLocal = "1"; law.downloadPercent = 100; law.downloadNodeCount = nodes.Count; law.downloadDate = DateTime.Now.ToString("yyyy-MM-dd"); UpdateHistory updateHistory = new UpdateHistory(); updateHistory.LawId = law.lawId; updateHistory.LawTitle = law.title; updateHistory.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); updateHistory.UserId = Global.user.Id; updateHistory.Version = law.version; updateHistory.Id = Guid.NewGuid().ToString(); addUpdateHistory(updateHistory); updateLawCount++; } else { //如果是更新版本的法规(且法规旧版本未下载至本地),只更新法规列表界面的版本 var oldUndownloadLaw = context.Law.FirstOrDefault(l => l.lastversion == law.lastversion && l.userId == Global.user.Id); if (oldUndownloadLaw != null) { updateLawCount++; } } context.Law.Add(law); } else//如果有就更新基本信息,但不更新是否下载到本地、下载时间、下载进度、用户id等本地信息。 { currentLaw.name = law.name; currentLaw.buhao = law.buhao; currentLaw.digest = law.digest; currentLaw.effectiveDate = law.effectiveDate; currentLaw.expiryDate = law.expiryDate; currentLaw.keyword = law.keyword; currentLaw.lastversion = law.lastversion; currentLaw.linghao = law.linghao; currentLaw.siju = law.siju; currentLaw.status = law.status; currentLaw.title = law.title; currentLaw.userLabel = law.userLabel; currentLaw.version = law.version; currentLaw.weijie = law.weijie; currentLaw.xiudingling = law.xiudingling; currentLaw.yewu = law.yewu; currentLaw.yilai = law.yilai; currentLaw.zefa = law.zefa; } context.SaveChanges(); } //context.SaveChanges(); autoUpdateCount = updateLawCount; MessageBox.Show("新版法规自动更新完成,本次共更新了" + updateLawCount.ToString() + "个法规的新版本"); return(true); } catch (Exception ex) { autoUpdateCount = -1; return(false); } } }
public void RemoteReduceWorks() { var coordinatorStorage = new FileSystemStorage(@"c:\temp\netreduce\coordinator", true); var coordinatorProcess = Process.Start(new ProcessStartInfo(@"..\..\..\NetReduce.CoordinatorService.ConsoleHost\bin\Debug\NetReduce.CoordinatorService.ConsoleHost.exe")); Thread.Sleep(100); try { var workerStorage = new FileSystemStorage(@"c:\temp\netreduce\0", false); var reducerCodeFileName = new Uri("file:///SampleReducer.cs"); TestHelpers.LoadToStorage(@"..\..\..\NetReduce.Core.Tests\SampleReducer.cs", reducerCodeFileName, this.storage); IUriProvider uriProvider = new UriProvider(); uriProvider.Uris.Add(new Uri("http://*****:*****@"(?<Key>.+)", "[0-9]+", RegexExtensions.GuidRegexString)); var uris = workerStorage.ListFiles(); foreach (var uri in uris) { var fileName = workerStorage.GetFileName(uri); if (regex.IsMatch(fileName)) { var key = regex.Match(fileName).Groups["Key"].Value; if (Base64.Decode(key) == "k1") { result = workerStorage.Read(fileName); } } } result.ShouldBe("3"); } finally { coordinatorProcess.Kill(); } }
public void AddWorker(RemoteWorker worker) { workers.Add(worker); }