1//===-- SWIG Interface for SBCommunication ----------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9namespace lldb {
10
11class SBCommunication
12{
13public:
14    enum {
15        eBroadcastBitDisconnected           = (1 << 0), ///< Sent when the communications connection is lost.
16        eBroadcastBitReadThreadGotBytes     = (1 << 1), ///< Sent by the read thread when bytes become available.
17        eBroadcastBitReadThreadDidExit      = (1 << 2), ///< Sent by the read thread when it exits to inform clients.
18        eBroadcastBitReadThreadShouldExit   = (1 << 3), ///< Sent by clients that need to cancel the read thread.
19        eBroadcastBitPacketAvailable        = (1 << 4), ///< Sent when data received makes a complete packet.
20        eAllEventBits                       = 0xffffffff
21    };
22
23    typedef void (*ReadThreadBytesReceived) (void *baton, const void *src, size_t src_len);
24
25    SBCommunication ();
26    SBCommunication (const char * broadcaster_name);
27   ~SBCommunication ();
28
29
30    bool
31    IsValid () const;
32
33    explicit operator bool() const;
34
35    lldb::SBBroadcaster
36    GetBroadcaster ();
37
38    static const char *GetBroadcasterClass();
39
40    lldb::ConnectionStatus
41    AdoptFileDesriptor (int fd, bool owns_fd);
42
43    lldb::ConnectionStatus
44    Connect (const char *url);
45
46    lldb::ConnectionStatus
47    Disconnect ();
48
49    bool
50    IsConnected () const;
51
52    bool
53    GetCloseOnEOF ();
54
55    void
56    SetCloseOnEOF (bool b);
57
58    size_t
59    Read (void *dst,
60          size_t dst_len,
61          uint32_t timeout_usec,
62          lldb::ConnectionStatus &status);
63
64    size_t
65    Write (const void *src,
66           size_t src_len,
67           lldb::ConnectionStatus &status);
68
69    bool
70    ReadThreadStart ();
71
72    bool
73    ReadThreadStop ();
74
75    bool
76    ReadThreadIsRunning ();
77
78    bool
79    SetReadThreadBytesReceivedCallback (ReadThreadBytesReceived callback,
80                                        void *callback_baton);
81};
82
83} // namespace lldb
84