IBR-DTNSuite  0.12
EMailConvergenceLayer.h
Go to the documentation of this file.
1 /*
2  * EMailConvergenceLayer.h
3  *
4  * Copyright (C) 2013 IBR, TU Braunschweig
5  *
6  * Written-by: Björn Gernert <mail@bjoern-gernert.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
22 #ifndef EMAILCONVERGENCELAYER_H_
23 #define EMAILCONVERGENCELAYER_H_
24 
25 #include "Component.h"
26 #include "Configuration.h"
27 
28 #include "core/EventReceiver.h"
29 #include "net/ConvergenceLayer.h"
31 #include "net/EMailSmtpService.h"
32 #include "net/EMailImapService.h"
33 
34 namespace dtn
35 {
36  namespace net
37  {
42  {
43  public:
48 
52  virtual ~EMailConvergenceLayer();
53 
60  void raiseEvent(const dtn::core::Event *event) throw ();
61 
66  void onUpdateBeacon(const ibrcommon::vinterface &iface, DiscoveryBeacon &beacon)
68 
76 
88  void queue(const dtn::core::Node &node,
89  const dtn::net::BundleTransfer &job);
90 
94  virtual const std::string getName() const;
95 
96  protected:
97  void __cancellation() throw ();
98 
99  void componentUp() throw ();
100  void componentDown() throw ();
101 
102  private:
106  const dtn::daemon::Configuration::EMail& _config;
107 
111  EMailSmtpService& _smtp;
112 
116  EMailImapService& _imap;
117 
121  size_t _lastSmtpTaskTime;
122 
126  size_t _lastImapTaskTime;
127  };
128  }
129 }
130 
131 #endif /* EMAILCONVERGENCELAYER_H_ */