import { GPGME_Message } from "./Message";
/* gpgme.js - Javascript integration for gpgme
* Copyright (C) 2018 Bundesamt für Sicherheit in der Informationstechnik
*
* This file is part of GPGME.
*
* GPGME is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* GPGME is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, see .
* SPDX-License-Identifier: LGPL-2.1+
*/
/**
* A connection port will be opened for each communication between gpgmejs and
* gnupg. It should be alive as long as there are additional messages to be
* expected.
*/
import { permittedOperations } from './permittedOperations'
export class Connection{
/**
* Opens and closes a port. Thus, it is made sure that the connection can
* be used.
* THIS BEHAVIOUR MAY CHANGE!
* discussion is to keep a port alive as long as the context stays the same
*
* TODO returns nothing, but triggers exceptions if not successfull
*/
constructor(){
this._connection = chrome.runtime.connectNative('gpgmejson');
if (!this._connection){
if (chrome.runtime.lastError){
throw('NO_CONNECT_RLE');
} else {
throw('NO_CONNECT');
}
}
this._flags = {}; // TODO general config
}
/**
* Immediately closes the open port
*/
disconnect() {
if (this._connection){
this._connection.disconnect();
}
}
/**
* Sends a message and resolves with the answer.
* @param {GPGME_Message} message
* @returns {Promise