Ejemplo n.º 1
0
 public static void CloseCursorIfExists(this WorkspaceConnection ws, NpgsqlCommand cmd)
 {
     if (ws.Cursor != null && cmd.Any($"select 1 from pg_cursors where name = '{ws.Cursor}'"))
     {
         cmd.Execute($"close \"{ws.Cursor}\"");
     }
 }
Ejemplo n.º 2
0
        public static void CleanupWs(this WorkspaceConnection ws, SQLiteConnection localConnection, bool cleanUpCursor = true)
        {
            if (ws.CursorTaskCancellationTokenSource != null)
            {
                ws.CursorTaskCancellationTokenSource.Cancel();
                if (ws.CursorTask.Status == TaskStatus.Running || ws.CursorTask.Status == TaskStatus.WaitingForActivation)
                {
                    while (!ws.CursorTask.IsCanceled)
                    {
                    }
                    ;
                }
                ws.CursorTask.Dispose();
                ws.CursorTask = null;
                ws.CursorTaskCancellationTokenSource.Dispose();
                ws.CursorTaskCancellationTokenSource = null;
            }

            if (cleanUpCursor && (ws.IsNewTran || ws.Cursor != null))
            {
                using var cmd = ws.Connection.CreateCommand();
                CleanUpCursor(ws, cmd);
            }

            if (ws.LocalTable != null)
            {
                using var cmd = localConnection.CreateCommand();
                cmd.Execute($"drop table {ws.LocalTable}");
                ws.LocalTable = null;
            }

            ws.ErrorOffset = null;
        }
Ejemplo n.º 3
0
        public SettingsWindow(WorkspaceConnection pConnection)
        {
            Connection  = pConnection;
            DataContext = _objViewModel;
            InitializeComponent();
            SetLoading("Getting settings...");

            _objViewModel.LocalProjectDirectory = Settings.ProjectPath;
            _objViewModel.ShotcutExecutable     = Settings.ShotcutExecutable;
            _objViewModel.HostName        = Settings.HostName;
            _objViewModel.Port            = Settings.Port;
            _objViewModel.StorageLocation = Settings.StorageLocation;
            _objViewModel.BackupLocation  = Settings.BackupLocation;

            Connection.Workspace.GetSettings((r) => {
                if (r.Status.State == Mitto.IMessaging.ResponseState.Success)
                {
                    _objViewModel.ServerFinalDirectory   = r.FinalDirectory;
                    _objViewModel.ServerLogDirectory     = r.LogDirectory;
                    _objViewModel.ServerMeltPath         = r.MeltPath;
                    _objViewModel.ServerNewDirectory     = r.NewDirectory;
                    _objViewModel.ServerProjectDirectory = r.ProjectDirectory;
                    _objViewModel.Threads = r.Threads;
                }
                else
                {
                    _ = MessageBox.Show($"Failed to get the settings, please try again or contact Nico the almighty");
                }
                EndLoading();
            });
        }
Ejemplo n.º 4
0
 public ExecuteHandler(
     WorkspaceConnection ws,
     SQLiteConnection localConnection,
     ExecutionMode?mode = null)
 {
     _ws = ws;
     _localConnection = localConnection;
     _mode            = mode ?? Program.Settings.ExecutionMode;
 }
Ejemplo n.º 5
0
        public static void SendPgError(this WorkspaceConnection ws, PostgresException e)
        {
            var message = new Message(e);

            if (ws.ErrorOffset.HasValue && message.Position != 0)
            {
                message.Position -= ws.ErrorOffset.Value;
            }
            ws.Proxy.SendAsync($"error-{ws.Id}", message).GetAwaiter().GetResult();
        }
Ejemplo n.º 6
0
 public static void CleanUpCursor(this WorkspaceConnection ws, NpgsqlCommand cmd)
 {
     if (ws.IsNewTran)
     {
         cmd.Execute("end");
     }
     else if (ws.Cursor != null)
     {
         CloseCursorIfExists(ws, cmd);
     }
     ws.Cursor    = null;
     ws.IsNewTran = false;
 }
        public MainWindow(WorkspaceConnection pConnection) : base()
        {
            Connection = pConnection;

            DataContext = _objViewModel;
            InitializeComponent();

            Connection.ConnectionStatusChanged += Connection_ConnectionStatusChanged;
            Connection.WorkspaceUpdated        += Connection_WorkspaceUpdated;
            Connection.RefreshRequired         += Connection_RefreshRequired;
            Connection.Start();
            StatusChanged += delegate(WindowStatus pStatus, string pMessage) {
                _objViewModel.SetStatus(pStatus, pMessage);
            };

            Load();
        }
Ejemplo n.º 8
0
 public static void SendPgNotice(this WorkspaceConnection ws, PostgresNotice notice)
 {
     ws.Proxy.SendAsync($"notice-{ws.Id}", new Message(notice)).GetAwaiter().GetResult();
 }