mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-10 04:40:25 +01:00
feat(pty): rename statuses
- NONE -> CLOSED. - CONNECTED -> OPEN. - Remove CONNECTING.
This commit is contained in:
parent
80ae0020da
commit
8fa7df29d3
2 changed files with 17 additions and 17 deletions
|
@ -63,8 +63,6 @@ void PTY::_bind_methods() {
|
||||||
}
|
}
|
||||||
|
|
||||||
PTY::PTY() {
|
PTY::PTY() {
|
||||||
status = STATUS_NONE;
|
|
||||||
|
|
||||||
env["TERM"] = "xterm-256color";
|
env["TERM"] = "xterm-256color";
|
||||||
env["COLORTERM"] = "truecolor";
|
env["COLORTERM"] = "truecolor";
|
||||||
|
|
||||||
|
@ -131,7 +129,7 @@ Error PTY::fork(const String &file, const PackedStringArray &args, const String
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
status = STATUS_CONNECTED;
|
status = STATUS_OPEN;
|
||||||
set_process_internal(true);
|
set_process_internal(true);
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
|
@ -181,7 +179,7 @@ void PTY::write(const Variant &data) const {
|
||||||
ERR_FAIL_MSG("Data must be a String or PackedByteArray.");
|
ERR_FAIL_MSG("Data must be a String or PackedByteArray.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status == STATUS_CONNECTED) {
|
if (status == STATUS_OPEN) {
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
uv_buf_t buf;
|
uv_buf_t buf;
|
||||||
buf.base = (char *)bytes.ptr();
|
buf.base = (char *)bytes.ptr();
|
||||||
|
@ -198,7 +196,11 @@ void PTY::_notification(int p_what) {
|
||||||
switch (p_what)
|
switch (p_what)
|
||||||
{
|
{
|
||||||
case NOTIFICATION_INTERNAL_PROCESS:
|
case NOTIFICATION_INTERNAL_PROCESS:
|
||||||
_run(UV_RUN_NOWAIT);
|
switch (status)
|
||||||
|
{
|
||||||
|
case STATUS_OPEN:
|
||||||
|
_run(UV_RUN_NOWAIT);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,22 +216,21 @@ void PTY::_run(uv_run_mode mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PTY::_close() {
|
void PTY::_close() {
|
||||||
set_process_internal(false);
|
|
||||||
status = STATUS_NONE;
|
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
if (!uv_is_closing((uv_handle_t *)&pipe)) {
|
if (!uv_is_closing((uv_handle_t *)&pipe)) {
|
||||||
uv_close((uv_handle_t *)&pipe, _close_cb);
|
uv_close((uv_handle_t *)&pipe, _close_cb);
|
||||||
|
uv_run(uv_default_loop(), UV_RUN_ONCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
uv_run(uv_default_loop(), UV_RUN_NOWAIT);
|
|
||||||
|
|
||||||
if (fd > 0) close(fd);
|
if (fd > 0) close(fd);
|
||||||
if (pid > 0) kill(SIGNAL_SIGHUP);
|
if (pid > 0) kill(SIGNAL_SIGHUP);
|
||||||
|
#endif
|
||||||
|
|
||||||
fd = -1;
|
fd = -1;
|
||||||
pid = -1;
|
pid = -1;
|
||||||
#endif
|
|
||||||
|
set_process_internal(false);
|
||||||
|
status = STATUS_CLOSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
String PTY::_get_fork_file(const String &file) const {
|
String PTY::_get_fork_file(const String &file) const {
|
||||||
|
@ -327,7 +328,7 @@ void _read_cb(uv_stream_t *pipe, ssize_t nread, const uv_buf_t *buf) {
|
||||||
// Can happen when the process exits.
|
// Can happen when the process exits.
|
||||||
// As long as PTY has caught it, we should be fine.
|
// As long as PTY has caught it, we should be fine.
|
||||||
uv_read_stop(pipe);
|
uv_read_stop(pipe);
|
||||||
pty->status = PTY::Status::STATUS_NONE;
|
pty->status = PTY::Status::STATUS_CLOSED;
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
pty->status = PTY::Status::STATUS_ERROR;
|
pty->status = PTY::Status::STATUS_ERROR;
|
||||||
|
@ -350,7 +351,7 @@ void _read_cb(uv_stream_t *pipe, ssize_t nread, const uv_buf_t *buf) {
|
||||||
|
|
||||||
void _close_cb(uv_handle_t *pipe) {
|
void _close_cb(uv_handle_t *pipe) {
|
||||||
PTY *pty = static_cast<PTY *>(pipe->data);
|
PTY *pty = static_cast<PTY *>(pipe->data);
|
||||||
pty->status = PTY::Status::STATUS_NONE;
|
pty->status = PTY::Status::STATUS_CLOSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PTY::_pipe_open(const int fd) {
|
Error PTY::_pipe_open(const int fd) {
|
||||||
|
|
|
@ -33,9 +33,8 @@ namespace godot
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Status {
|
enum Status {
|
||||||
STATUS_NONE,
|
STATUS_CLOSED,
|
||||||
STATUS_CONNECTING,
|
STATUS_OPEN,
|
||||||
STATUS_CONNECTED,
|
|
||||||
STATUS_PAUSED,
|
STATUS_PAUSED,
|
||||||
STATUS_ERROR,
|
STATUS_ERROR,
|
||||||
};
|
};
|
||||||
|
@ -43,7 +42,7 @@ namespace godot
|
||||||
PTY();
|
PTY();
|
||||||
~PTY();
|
~PTY();
|
||||||
|
|
||||||
Status status = STATUS_NONE;
|
Status status = STATUS_CLOSED;
|
||||||
|
|
||||||
int get_cols() const;
|
int get_cols() const;
|
||||||
int get_rows() const;
|
int get_rows() const;
|
||||||
|
|
Loading…
Reference in a new issue