Line data Source code
1 : /* 2 : * 3 : * Copyright (c) 2021 Project CHIP Authors 4 : * 5 : * Licensed under the Apache License, Version 2.0 (the "License"); 6 : * you may not use this file except in compliance with the License. 7 : * You may obtain a copy of the License at 8 : * 9 : * http://www.apache.org/licenses/LICENSE-2.0 10 : * 11 : * Unless required by applicable law or agreed to in writing, software 12 : * distributed under the License is distributed on an "AS IS" BASIS, 13 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 : * See the License for the specific language governing permissions and 15 : * limitations under the License. 16 : */ 17 : 18 : #pragma once 19 : 20 : #include <transport/SecureSession.h> 21 : #include <transport/Session.h> 22 : 23 : namespace chip { 24 : namespace Transport { 25 : 26 : class MessageCounterManagerInterface 27 : { 28 : public: 29 0 : virtual ~MessageCounterManagerInterface() {} 30 : 31 : /** 32 : * Start sync if the sync procedure is not started yet. 33 : */ 34 : virtual CHIP_ERROR StartSync(const SessionHandle & session, Transport::SecureSession * state) = 0; 35 : 36 : /** 37 : * Called when have received a message but session message counter is not synced. It will queue the message and start sync if 38 : * the sync procedure is not started yet. 39 : */ 40 : virtual CHIP_ERROR QueueReceivedMessageAndStartSync(const PacketHeader & packetHeader, const SessionHandle & session, 41 : Transport::SecureSession * state, 42 : const Transport::PeerAddress & peerAddress, 43 : System::PacketBufferHandle && msgBuf) = 0; 44 : }; 45 : 46 : } // namespace Transport 47 : } // namespace chip