MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / processCommand

Method processCommand

src/jrd/ProfilerManager.cpp:1106–1196  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1104}
1105
1106void ProfilerListener::processCommand(thread_db* tdbb)
1107{
1108 const auto header = ipc->sharedMemory->getHeader();
1109 const auto profilerManager = attachment->getProfilerManager(tdbb);
1110
1111 if (header->userName[0] && attachment->getUserName() != header->userName)
1112 status_exception::raise(Arg::Gds(isc_miss_prvlg) << "PROFILE_ANY_ATTACHMENT");
1113
1114 using Tag = ProfilerIpc::Tag;
1115
1116 switch (header->tag)
1117 {
1118 case Tag::CANCEL_SESSION:
1119 profilerManager->cancelSession();
1120 header->bufferSize = 0;
1121 break;
1122
1123 case Tag::DISCARD:
1124 profilerManager->discard();
1125 header->bufferSize = 0;
1126 break;
1127
1128 case Tag::FINISH_SESSION:
1129 {
1130 const auto in = reinterpret_cast<const ProfilerPackage::FinishSessionInput::Type*>(header->buffer);
1131 fb_assert(sizeof(*in) == header->bufferSize);
1132 profilerManager->finishSession(tdbb, in->flush);
1133 header->bufferSize = 0;
1134 break;
1135 }
1136
1137 case Tag::FLUSH:
1138 profilerManager->flush();
1139 header->bufferSize = 0;
1140 break;
1141
1142 case Tag::PAUSE_SESSION:
1143 {
1144 const auto in = reinterpret_cast<const ProfilerPackage::PauseSessionInput::Type*>(header->buffer);
1145 fb_assert(sizeof(*in) == header->bufferSize);
1146 profilerManager->pauseSession(in->flush);
1147 header->bufferSize = 0;
1148 break;
1149 }
1150
1151 case Tag::RESUME_SESSION:
1152 profilerManager->resumeSession();
1153 header->bufferSize = 0;
1154 break;
1155
1156 case Tag::SET_FLUSH_INTERVAL:
1157 {
1158 const auto in = reinterpret_cast<const ProfilerPackage::SetFlushIntervalInput::Type*>(header->buffer);
1159 fb_assert(sizeof(*in) == header->bufferSize);
1160
1161 profilerManager->setFlushInterval(in->flushInterval);
1162 header->bufferSize = 0;
1163 break;

Callers

nothing calls this directly

Calls 14

raiseFunction · 0.85
GdsClass · 0.85
getProfilerManagerMethod · 0.80
cancelSessionMethod · 0.80
discardMethod · 0.80
finishSessionMethod · 0.80
pauseSessionMethod · 0.80
resumeSessionMethod · 0.80
setFlushIntervalMethod · 0.80
getHeaderMethod · 0.45
getUserNameMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected