blob: 2d8c7081284743ae532841358b56d7488e670062 [file] [log] [blame]
Alp Toker632c6cd2014-01-23 22:19:45 +00001//===---------- RPCChannel.h - LLVM out-of-process JIT execution ----------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Definition of the RemoteTargetExternal class which executes JITed code in a
11// separate process from where it was built.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLI_RPCCHANNEL_H
16#define LLI_RPCCHANNEL_H
17
18#include <stdlib.h>
19#include <string>
20
21namespace llvm {
22
23class RPCChannel {
24public:
25 std::string ChildName;
26
27 RPCChannel() {}
28 ~RPCChannel();
29
Alp Toker632c6cd2014-01-23 22:19:45 +000030 /// Start the remote process.
31 ///
32 /// @returns True on success. On failure, ErrorMsg is updated with
33 /// descriptive text of the encountered error.
34 bool createServer();
35
36 bool createClient();
37
38 // This will get filled in as a point to an OS-specific structure.
39 void *ConnectionData;
40
Alp Tokerad6aa472014-01-24 17:18:52 +000041 bool WriteBytes(const void *Data, size_t Size);
42 bool ReadBytes(void *Data, size_t Size);
Alp Toker632c6cd2014-01-23 22:19:45 +000043
44 void Wait();
45};
46
47} // end namespace llvm
48
49#endif // LLI_RPCCHANNEL_H