aboutsummaryrefslogtreecommitdiff
path: root/src/client_message_listener.rs
blob: 1f77027784e20dd673c4342c873df09058d06cb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/// Interface to be implemented to listen to `LightstreamerClient.sendMessage()` events reporting
/// a message processing outcome. Events for these listeners are dispatched by a different
/// thread than the one that generates them. All the notifications for a single `LightstreamerClient`,
/// including notifications to `ClientListener`, `SubscriptionListener` and `ClientMessageListener`
/// will be dispatched by the same thread. Only one event per message is fired on this listener.
pub trait ClientMessageListener {
    /// Event handler that is called by Lightstreamer when any notifications of the processing
    /// outcome of the related message haven't been received yet and can no longer be received.
    /// Typically, this happens after the session has been closed. In this case, the client has
    /// no way of knowing the processing outcome and any outcome is possible.
    ///
    /// # Parameters
    ///
    /// * `msg`: the message to which this notification is related.
    /// * `sent_on_network`: `true` if the message was sent on the network, `false` otherwise.
    ///   Even if the flag is `true`, it is not possible to infer whether the message actually
    ///   reached the Lightstreamer Server or not.
    fn on_abort(&self, _msg: &str, _sent_on_network: bool) {
        // Implementation for on_abort
        unimplemented!("Implement on_abort method for ClientMessageListener.");
    }

    /// Event handler that is called by Lightstreamer when the related message has been processed
    /// by the Server but the expected processing outcome could not be achieved for any reason.
    ///
    /// # Parameters
    ///
    /// * `msg`: the message to which this notification is related.
    /// * `code`: the error code sent by the Server. It can be one of the following:
    ///   - `<= 0`: the Metadata Adapter has refused the message; the code value is dependent
    ///     on the specific Metadata Adapter implementation.
    /// * `error`: the description of the error sent by the Server.
    fn on_deny(&self, _msg: &str, _code: i32, _error: &str) {
        // Implementation for on_deny
        unimplemented!("Implement on_deny method for ClientMessageListener.");
    }

    /// Event handler that is called by Lightstreamer to notify that the related message has
    /// been discarded by the Server. This means that the message has not reached the Metadata
    /// Adapter and the message next in the sequence is considered enabled for processing.
    ///
    /// # Parameters
    ///
    /// * `msg`: the message to which this notification is related.
    fn on_discarded(&self, _msg: &str) {
        // Implementation for on_discarded
        unimplemented!("Implement on_discarded method for ClientMessageListener.");
    }

    /// Event handler that is called by Lightstreamer when the related message has been processed
    /// by the Server but the processing has failed for any reason. The level of completion of
    /// the processing by the Metadata Adapter cannot be determined.
    ///
    /// # Parameters
    ///
    /// * `msg`: the message to which this notification is related.
    fn on_error(&self, _msg: &str) {
        // Implementation for on_error
        unimplemented!("Implement on_error method for ClientMessageListener.");
    }

    /// Event handler that is called by Lightstreamer when the related message has been processed
    /// by the Server with success.
    ///
    /// # Parameters
    ///
    /// * `msg`: the message to which this notification is related.
    /// * `response`: the response from the Metadata Adapter. If not supplied (i.e. supplied as `None`),
    ///   an empty message is received here.
    fn on_processed(&self, _msg: &str, _response: Option<&str>) {
        // Implementation for on_processed
        unimplemented!("Implement on_processed method for ClientMessageListener.");
    }
}