1*14675a02SAndroid Build Coastguard Worker /* 2*14675a02SAndroid Build Coastguard Worker * Copyright 2020 Google LLC 3*14675a02SAndroid Build Coastguard Worker * 4*14675a02SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*14675a02SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*14675a02SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*14675a02SAndroid Build Coastguard Worker * 8*14675a02SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*14675a02SAndroid Build Coastguard Worker * 10*14675a02SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*14675a02SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*14675a02SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*14675a02SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*14675a02SAndroid Build Coastguard Worker * limitations under the License. 15*14675a02SAndroid Build Coastguard Worker */ 16*14675a02SAndroid Build Coastguard Worker #ifndef FCP_CLIENT_SECAGG_EVENT_PUBLISHER_H_ 17*14675a02SAndroid Build Coastguard Worker #define FCP_CLIENT_SECAGG_EVENT_PUBLISHER_H_ 18*14675a02SAndroid Build Coastguard Worker 19*14675a02SAndroid Build Coastguard Worker #include <cstdint> 20*14675a02SAndroid Build Coastguard Worker #include <string> 21*14675a02SAndroid Build Coastguard Worker 22*14675a02SAndroid Build Coastguard Worker namespace fcp::secagg { 23*14675a02SAndroid Build Coastguard Worker enum class ClientState : int; 24*14675a02SAndroid Build Coastguard Worker } // namespace fcp::secagg 25*14675a02SAndroid Build Coastguard Worker 26*14675a02SAndroid Build Coastguard Worker namespace fcp { 27*14675a02SAndroid Build Coastguard Worker namespace client { 28*14675a02SAndroid Build Coastguard Worker 29*14675a02SAndroid Build Coastguard Worker // An interface for publishing events that occur during the secure 30*14675a02SAndroid Build Coastguard Worker // aggregation protocol. All methods in here either succeed with OK, or fail 31*14675a02SAndroid Build Coastguard Worker // with INVALID_ARGUMENT. 32*14675a02SAndroid Build Coastguard Worker class SecAggEventPublisher { 33*14675a02SAndroid Build Coastguard Worker public: 34*14675a02SAndroid Build Coastguard Worker virtual ~SecAggEventPublisher() = default; 35*14675a02SAndroid Build Coastguard Worker 36*14675a02SAndroid Build Coastguard Worker // Publishes that the protocol has left the prior state and entered the 37*14675a02SAndroid Build Coastguard Worker // given state, along with the size of the last message sent. 38*14675a02SAndroid Build Coastguard Worker virtual void PublishStateTransition(::fcp::secagg::ClientState state, 39*14675a02SAndroid Build Coastguard Worker size_t last_sent_message_size, 40*14675a02SAndroid Build Coastguard Worker size_t last_received_message_size) = 0; 41*14675a02SAndroid Build Coastguard Worker // Publishes a top-level SecAgg client error. 42*14675a02SAndroid Build Coastguard Worker virtual void PublishError() = 0; 43*14675a02SAndroid Build Coastguard Worker // Publishes a SecAgg client abort. 44*14675a02SAndroid Build Coastguard Worker virtual void PublishAbort(bool client_initiated, 45*14675a02SAndroid Build Coastguard Worker const std::string& error_message) = 0; 46*14675a02SAndroid Build Coastguard Worker // After calling this function, all subsequently published events will be 47*14675a02SAndroid Build Coastguard Worker // annotated with the specified execution logging ID, which is set during 48*14675a02SAndroid Build Coastguard Worker // protocol execution. 49*14675a02SAndroid Build Coastguard Worker virtual void set_execution_session_id(int64_t execution_session_id) = 0; 50*14675a02SAndroid Build Coastguard Worker }; 51*14675a02SAndroid Build Coastguard Worker 52*14675a02SAndroid Build Coastguard Worker } // namespace client 53*14675a02SAndroid Build Coastguard Worker } // namespace fcp 54*14675a02SAndroid Build Coastguard Worker 55*14675a02SAndroid Build Coastguard Worker #endif // FCP_CLIENT_SECAGG_EVENT_PUBLISHER_H_ 56