]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/thrift/lib/cpp/test/processor/EventLog.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / thrift / lib / cpp / test / processor / EventLog.h
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 #ifndef _THRIFT_TEST_EVENTLOG_H_
20 #define _THRIFT_TEST_EVENTLOG_H_ 1
21
22 #include <thrift/concurrency/Monitor.h>
23
24 namespace apache {
25 namespace thrift {
26 namespace test {
27
28 // Initially I made EventType an enum, but using char* results
29 // in much more readable error messages when there is a mismatch.
30 // It also lets users of EventLog easily define their own new types.
31 // Comparing the literal pointer values should be safe, barring any strange
32 // linking setup that results in duplicate symbols.
33 typedef const char* EventType;
34
35 struct Event {
36 Event(EventType type, uint32_t connectionId, uint32_t callId, const std::string& message)
37 : type(type), connectionId(connectionId), callId(callId), message(message) {}
38
39 EventType type;
40 uint32_t connectionId;
41 uint32_t callId;
42 std::string message;
43 };
44
45 class EventLog {
46 public:
47 static EventType ET_LOG_END;
48 static EventType ET_CONN_CREATED;
49 static EventType ET_CONN_DESTROYED;
50 static EventType ET_CALL_STARTED;
51 static EventType ET_CALL_FINISHED;
52 static EventType ET_PROCESS;
53 static EventType ET_PRE_READ;
54 static EventType ET_POST_READ;
55 static EventType ET_PRE_WRITE;
56 static EventType ET_POST_WRITE;
57 static EventType ET_ASYNC_COMPLETE;
58 static EventType ET_HANDLER_ERROR;
59
60 static EventType ET_CALL_INCREMENT_GENERATION;
61 static EventType ET_CALL_GET_GENERATION;
62 static EventType ET_CALL_ADD_STRING;
63 static EventType ET_CALL_GET_STRINGS;
64 static EventType ET_CALL_GET_DATA_WAIT;
65 static EventType ET_CALL_ONEWAY_WAIT;
66 static EventType ET_CALL_UNEXPECTED_EXCEPTION_WAIT;
67 static EventType ET_CALL_EXCEPTION_WAIT;
68 static EventType ET_WAIT_RETURN;
69 static EventType ET_CALL_SET_VALUE;
70 static EventType ET_CALL_GET_VALUE;
71
72 EventLog();
73
74 void append(EventType type,
75 uint32_t connectionId,
76 uint32_t callId,
77 const std::string& message = "");
78
79 Event waitForEvent(int64_t timeout = 500);
80 Event waitForConnEvent(uint32_t connId, int64_t timeout = 500);
81
82 protected:
83 typedef std::list<Event> EventList;
84
85 concurrency::Monitor monitor_;
86 EventList events_;
87 uint32_t id_;
88
89 static uint32_t nextId_;
90 };
91 }
92 }
93 } // apache::thrift::test
94
95 #endif // _THRIFT_TEST_EVENTLOG_H_