Exemplo n.º 1
0
int Configurator::Run(bool installing)
{
    rime::Deployer& deployer(rime::Service::instance().deployer());
	bool reconfigured = false;

	rime::SwitcherSettings switcher_settings(&deployer);
	UIStyleSettings ui_style_settings(&deployer);

	bool skip_switcher_settings = installing && !switcher_settings.IsFirstRun();
	bool skip_ui_style_settings = installing && !ui_style_settings.IsFirstRun();

	(skip_switcher_settings || ConfigureSwitcher(&switcher_settings, &reconfigured)) &&
		(skip_ui_style_settings || ConfigureUI(&ui_style_settings, &reconfigured));

	if (installing || reconfigured) {
		return UpdateWorkspace(reconfigured);
	}
	return 0;
}
Exemplo n.º 2
0
int Configurator::SyncUserData() {
	HANDLE hMutex = CreateMutex(NULL, TRUE, L"WeaselDeployerMutex");
	if (!hMutex)
	{
		LOG(ERROR) << "Error creating WeaselDeployerMutex.";
		return 1;
	}
	if (GetLastError() == ERROR_ALREADY_EXISTS)
	{
		LOG(WARNING) << "another deployer process is running; aborting operation.";
		CloseHandle(hMutex);
		MessageBox(NULL, L"正在執行另一項部署任務,請稍候再試。", L"【小狼毫】", MB_OK | MB_ICONINFORMATION);
		return 1;
	}

	weasel::Client client;
	if (client.Connect())
	{
		LOG(INFO) << "Turning WeaselServer into maintenance mode.";
		client.StartMaintenance();
	}

	{
		rime::Deployer& deployer(rime::Service::instance().deployer());
		if (!RimeSyncUserData())
		{
			LOG(ERROR) << "Error synching user data.";
			return 1;
		}
		RimeJoinMaintenanceThread();
	}

	CloseHandle(hMutex);  // should be closed before resuming service.

	if (client.Connect())
	{
		LOG(INFO) << "Resuming service.";
		client.EndMaintenance();
	}
	return 0;
}
Exemplo n.º 3
0
int Configurator::DictManagement() {
	HANDLE hMutex = CreateMutex(NULL, TRUE, L"WeaselDeployerMutex");
	if (!hMutex)
	{
		LOG(ERROR) << "Error creating WeaselDeployerMutex.";
		return 1;
	}
	if (GetLastError() == ERROR_ALREADY_EXISTS)
	{
		LOG(WARNING) << "another deployer process is running; aborting operation.";
		CloseHandle(hMutex);
		MessageBox(NULL, L"正在執行另一項部署任務,請稍候再試。", L"【小狼毫】", MB_OK | MB_ICONINFORMATION);
		return 1;
	}

	weasel::Client client;
	if (client.Connect())
	{
		LOG(INFO) << "Turning WeaselServer into maintenance mode.";
		client.StartMaintenance();
	}

	{
		rime::Deployer& deployer(rime::Service::instance().deployer());
		rime::InstallationUpdate installation;
		installation.Run(&deployer);  // setup user data sync dir
		DictManagementDialog dlg(&deployer);
		dlg.DoModal();
	}

	CloseHandle(hMutex);  // should be closed before resuming service.

	if (client.Connect())
	{
		LOG(INFO) << "Resuming service.";
		client.EndMaintenance();
	}
	return 0;
}
Exemplo n.º 4
0
int main(int argc, char** argv) {

  // Initialize Orocos
  __os_init(argc, argv);

  OCL::DeploymentComponent deployer("deployer");
  RTT::Logger::Instance()->setLogLevel(RTT::Logger::Debug);
  deployer.import("rtt_ros");
  deployer.import("rtt_rosnode");
  deployer.getProvider<RTT::Scripting>("scripting")->eval("ros.import(\"conman\")");
  deployer.getProvider<RTT::Scripting>("scripting")->eval("ros.import(\"conman_ros\")"); 

  conman::Scheme scheme("scheme");
  scheme.connectPeers(&deployer);
  scheme.loadService("conman_ros");
  
  IOBlock iob1(argc, argv, "iob1");
  IOBlock iob2(argc, argv, "iob2");
  IOBlock iob3(argc, argv, "iob3");
  IOBlock iob4(argc, argv, "iob4");
  IOBlock iob5(argc, argv, "iob5");

  iob1.out.connectTo(&iob2.in);
  iob2.out.connectTo(&iob3.in);
  iob3.out.connectTo(&iob4.in);
  iob4.out.connectTo(&iob5.in);
  iob5.out.connectTo(&iob1.in);

  scheme.addBlock(&iob1);
  scheme.addBlock(&iob2);
  scheme.addBlock(&iob3);
  scheme.addBlock(&iob4);
  scheme.addBlock(&iob5);

  scheme.latchConnections("iob5","iob1",true);

  scheme.setGroupMembers("even", "iob2");
  scheme.addToGroup("iob4", "even");

  scheme.addGroup("odd");
  scheme.addToGroup("iob1", "odd");
  scheme.addToGroup("iob3", "odd");
  scheme.addToGroup("iob5", "odd");

  scheme.addGroup("other");
  scheme.addToGroup("iob5", "other");
  scheme.addToGroup("iob4", "other");

  std::vector<std::string> execution_order;
  scheme.getExecutionOrder(execution_order);
  std::vector<std::string> &ptr_blocks = execution_order;

  scheme.configure();

  scheme.start();

  scheme.enableBlocks(ptr_blocks, true, true);

  OCL::TaskBrowser browse(&deployer);
  browse.loop();

  return 0;
}