#ifndef __REMOTE_PROCESS_H__
#define __REMOTE_PROCESS_H__

#include "mecha.h"

typedef struct s_RemoteProcess RemoteProcess;

RemoteProcess * remote_process_new (const char *executable);
void remote_process_destroy (void *ptr);

void remote_process_addEnvironment (RemoteProcess *instance, const char *variable);
void remote_process_addEnvironmentData (RemoteProcess *instance, const char *variable, int len);

void remote_process_addArgument (RemoteProcess *instance, const char *argument);

bool remote_process_start (RemoteProcess *instance);

int remote_process_getStdIn (RemoteProcess *instance);
int remote_process_getStdOut (RemoteProcess *instance);
int remote_process_getStdErr (RemoteProcess *instance);

bool remote_process_closeStdOut (RemoteProcess *instance);
bool remote_process_closeStdIn (RemoteProcess *instance);

const char *remote_process_get_executable (RemoteProcess *instance);

#endif
