1//===---------- 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 LLVM_TOOLS_LLI_RPCCHANNEL_H
16#define LLVM_TOOLS_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
30  /// 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
41  bool WriteBytes(const void *Data, size_t Size);
42  bool ReadBytes(void *Data, size_t Size);
43
44  void Wait();
45};
46
47} // end namespace llvm
48
49#endif
50