@@ -1112,34 +1112,56 @@ bool ClientImpl::drain() throw (voltdb::Exception, voltdb::NoConnectionsExceptio
1112
1112
class TopoUpdateCallback : public voltdb ::ProcedureCallback
1113
1113
{
1114
1114
public:
1115
- TopoUpdateCallback (Distributer *dist):m_dist(dist){}
1115
+ TopoUpdateCallback (Distributer *dist, ClientLogger *logger) : m_dist(dist), m_logger(logger) {}
1116
+
1116
1117
bool callback (InvocationResponse response) throw (voltdb::Exception)
1117
1118
{
1118
1119
if (response.failure ()){
1119
- std::cerr << " Failure response TopoUpdateCallback::callback: " << response.statusString () << std::endl;
1120
+ std::ostringstream os;
1121
+ os << " Failure response TopoUpdateCallback::callback: " << response.statusString ();
1122
+ if (m_logger) {
1123
+ m_logger->log (ClientLogger::ERROR, os.str ());
1124
+ }
1125
+ else {
1126
+ std::cerr << os.str () << std::endl;
1127
+ }
1120
1128
return false ;
1121
1129
}
1122
1130
m_dist->updateAffinityTopology (response.results ());
1123
1131
return true ;
1124
1132
}
1133
+
1134
+ bool allowAbandon () const {return false ;}
1135
+
1125
1136
private:
1126
1137
Distributer *m_dist;
1138
+ ClientLogger *m_logger;
1127
1139
};
1128
1140
1129
1141
class SubscribeCallback : public voltdb ::ProcedureCallback
1130
1142
{
1131
1143
public:
1132
- SubscribeCallback (){}
1144
+ SubscribeCallback (ClientLogger *logger) : m_logger(logger) {}
1145
+
1133
1146
bool callback (InvocationResponse response) throw (voltdb::Exception)
1134
1147
{
1135
1148
if (response.failure ()) {
1136
- std::cerr << " Failure response SubscribeCallback::callback: " << response.statusString () << std::endl;
1149
+ std::ostringstream os;
1150
+ os << " Failure response SubscribeCallback::callback: " << response.statusString ();
1151
+ if (m_logger) {
1152
+ m_logger->log (ClientLogger::ERROR, os.str ());
1153
+ }
1154
+ else {
1155
+ std::cerr << os.str ()<< std::endl;
1156
+ }
1137
1157
return false ;
1138
1158
}
1139
1159
return true ;
1140
1160
}
1141
1161
1142
1162
bool allowAbandon () const {return false ;}
1163
+ private:
1164
+ ClientLogger *m_logger;
1143
1165
};
1144
1166
1145
1167
/*
@@ -1148,12 +1170,19 @@ class SubscribeCallback : public voltdb::ProcedureCallback
1148
1170
class ProcUpdateCallback : public voltdb ::ProcedureCallback
1149
1171
{
1150
1172
public:
1151
- ProcUpdateCallback (Distributer *dist): m_dist(dist) {}
1173
+ ProcUpdateCallback (Distributer *dist, ClientLogger *logger) : m_dist(dist), m_logger(logger ) {}
1152
1174
1153
1175
bool callback (InvocationResponse response) throw (voltdb::Exception)
1154
1176
{
1155
1177
if (response.failure ()) {
1156
- std::cerr << " Failure response SubscribeCallback::callback: " << response.statusString () << std::endl;
1178
+ std::ostringstream os;
1179
+ os << " Failure response SubscribeCallback::callback: " << response.statusString ();
1180
+ if (m_logger) {
1181
+ m_logger->log (ClientLogger::ERROR, os.str ());
1182
+ }
1183
+ else {
1184
+ std::cerr << os.str () << std::endl;
1185
+ }
1157
1186
return false ;
1158
1187
}
1159
1188
m_dist->updateProcedurePartitioning (response.results ());
@@ -1164,6 +1193,7 @@ class ProcUpdateCallback : public voltdb::ProcedureCallback
1164
1193
1165
1194
private:
1166
1195
Distributer *m_dist;
1196
+ ClientLogger *m_logger;
1167
1197
};
1168
1198
1169
1199
@@ -1176,7 +1206,7 @@ void ClientImpl::updateHashinator(){
1176
1206
voltdb::ParameterSet* params = systemCatalogProc.params ();
1177
1207
params->addString (" PROCEDURES" );
1178
1208
1179
- boost::shared_ptr<ProcUpdateCallback> procCallback (new ProcUpdateCallback (&m_distributer));
1209
+ boost::shared_ptr<ProcUpdateCallback> procCallback (new ProcUpdateCallback (&m_distributer, m_pLogger ));
1180
1210
invoke (systemCatalogProc, procCallback);
1181
1211
1182
1212
parameterTypes.resize (2 );
@@ -1187,7 +1217,7 @@ void ClientImpl::updateHashinator(){
1187
1217
params = statisticsProc.params ();
1188
1218
params->addString (" TOPO" ).addInt32 (0 );
1189
1219
1190
- boost::shared_ptr<TopoUpdateCallback> topoCallback (new TopoUpdateCallback (&m_distributer));
1220
+ boost::shared_ptr<TopoUpdateCallback> topoCallback (new TopoUpdateCallback (&m_distributer, m_pLogger ));
1191
1221
1192
1222
invoke (statisticsProc, topoCallback);
1193
1223
}
@@ -1200,7 +1230,7 @@ void ClientImpl::subscribeToTopologyNotifications(){
1200
1230
voltdb::ParameterSet* params = statisticsProc.params ();
1201
1231
params->addString (" TOPOLOGY" );
1202
1232
1203
- boost::shared_ptr<SubscribeCallback> topoCallback (new SubscribeCallback ());
1233
+ boost::shared_ptr<SubscribeCallback> topoCallback (new SubscribeCallback (m_pLogger ));
1204
1234
1205
1235
invoke (statisticsProc, topoCallback);
1206
1236
}
0 commit comments