Skip to content

Commit 31f36a5

Browse files
author
Shu0T1an ChenG
committed
[portsyncd]: Add producer for state database updates
- Add m_statePortTable to write to the state database once the ports are ready - Remove suffix Consumer in some variables since they are not 'consumers' Signed-off-by: Shu0T1an ChenG <[email protected]>
1 parent 9ff7cc7 commit 31f36a5

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

portsyncd/linksync.cpp

+14-9
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,19 @@ extern set<string> g_portSet;
3030
extern map<string, set<string>> g_vlanMap;
3131
extern bool g_init;
3232

33-
LinkSync::LinkSync(DBConnector *db) :
34-
m_portTableProducer(db, APP_PORT_TABLE_NAME),
35-
m_vlanTableProducer(db, APP_VLAN_TABLE_NAME),
36-
m_vlanMemberTableProducer(db, APP_VLAN_MEMBER_TABLE_NAME),
37-
m_portTableConsumer(db, APP_PORT_TABLE_NAME),
38-
m_vlanMemberTableConsumer(db, APP_VLAN_MEMBER_TABLE_NAME)
33+
LinkSync::LinkSync(DBConnector *appl_db, DBConnector *state_db) :
34+
m_portTableProducer(appl_db, APP_PORT_TABLE_NAME),
35+
m_vlanTableProducer(appl_db, APP_VLAN_TABLE_NAME),
36+
m_vlanMemberTableProducer(appl_db, APP_VLAN_MEMBER_TABLE_NAME),
37+
m_portTable(appl_db, APP_PORT_TABLE_NAME),
38+
m_vlanMemberTable(appl_db, APP_VLAN_MEMBER_TABLE_NAME),
39+
m_statePortTable(state_db, STATE_PORT_TABLE_NAME, CONFIGDB_TABLE_NAME_SEPARATOR)
3940
{
4041
/* See the comments for g_portSet in portsyncd.cpp */
4142
for (string port : g_portSet)
4243
{
4344
vector<FieldValueTuple> temp;
44-
if (m_portTableConsumer.get(port, temp))
45+
if (m_portTable.get(port, temp))
4546
{
4647
for (auto it : temp)
4748
{
@@ -55,7 +56,7 @@ LinkSync::LinkSync(DBConnector *db) :
5556
}
5657

5758
vector<KeyOpFieldsValuesTuple> tuples;
58-
m_vlanMemberTableConsumer.getTableContent(tuples);
59+
m_vlanMemberTable.getTableContent(tuples);
5960

6061
for (auto tuple : tuples)
6162
{
@@ -183,7 +184,7 @@ void LinkSync::onMsg(int nlmsg_type, struct nl_object *obj)
183184
* non-front panel interfaces such as eth0, lo which are not in the
184185
* PORT_TABLE are ignored. */
185186
vector<FieldValueTuple> temp;
186-
if (m_portTableConsumer.get(key, temp))
187+
if (m_portTable.get(key, temp))
187188
{
188189
/* TODO: When port is removed from the kernel */
189190
if (nlmsg_type == RTM_DELLINK)
@@ -195,6 +196,10 @@ void LinkSync::onMsg(int nlmsg_type, struct nl_object *obj)
195196
if (!g_init && g_portSet.find(key) != g_portSet.end())
196197
{
197198
g_portSet.erase(key);
199+
FieldValueTuple tuple("state", "ok");
200+
vector<FieldValueTuple> vector;
201+
vector.push_back(tuple);
202+
m_statePortTable.set(key, vector);
198203
}
199204

200205
m_portTableProducer.set(key, fvVector);

portsyncd/linksync.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class LinkSync : public NetMsg
1414
public:
1515
enum { MAX_ADDR_SIZE = 64 };
1616

17-
LinkSync(DBConnector *db);
17+
LinkSync(DBConnector *appl_db, DBConnector *state_db);
1818

1919
virtual void onMsg(int nlmsg_type, struct nl_object *obj);
2020

2121
private:
2222
ProducerStateTable m_portTableProducer, m_vlanTableProducer, m_vlanMemberTableProducer;
23-
Table m_portTableConsumer, m_vlanMemberTableConsumer;
23+
Table m_portTable, m_vlanMemberTable, m_statePortTable;
2424

2525
std::map<unsigned int, std::string> m_ifindexNameMap;
2626
};

portsyncd/portsyncd.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ int main(int argc, char **argv)
6464
}
6565
}
6666

67-
DBConnector db(0, DBConnector::DEFAULT_UNIXSOCKET, 0);
68-
ProducerStateTable p(&db, APP_PORT_TABLE_NAME);
67+
DBConnector appl_db(APPL_DB, DBConnector::DEFAULT_UNIXSOCKET, 0);
68+
DBConnector state_db(STATE_DB, DBConnector::DEFAULT_UNIXSOCKET, 0);
69+
ProducerStateTable p(&appl_db, APP_PORT_TABLE_NAME);
6970

70-
LinkSync sync(&db);
71+
LinkSync sync(&appl_db, &state_db);
7172
NetDispatcher::getInstance().registerMessageHandler(RTM_NEWLINK, &sync);
7273
NetDispatcher::getInstance().registerMessageHandler(RTM_DELLINK, &sync);
7374

0 commit comments

Comments
 (0)