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

Class ExtFunctionNode

src/jrd/ExtEngineManager.cpp:341–370  ·  view source on GitHub ↗

External function node.

Source from the content-addressed store, hash-verified

339
340 // External function node.
341 class ExtFunctionNode : public SuspendNode
342 {
343 public:
344 ExtFunctionNode(MemoryPool& pool, const MessageNode* aExtInMessageNode, const MessageNode* aExtOutMessageNode,
345 const ExtEngineManager::Function* aFunction)
346 : SuspendNode(pool),
347 extInMessageNode(aExtInMessageNode),
348 extOutMessageNode(aExtOutMessageNode),
349 function(aFunction)
350 {
351 }
352
353 virtual const StmtNode* execute(thread_db* tdbb, Request* request, ExeState* exeState) const
354 {
355 if (request->req_operation == Request::req_evaluate)
356 {
357 UCHAR* inMsg = extInMessageNode ? request->getImpure<UCHAR>(extInMessageNode->impureOffset) : NULL;
358 UCHAR* outMsg = request->getImpure<UCHAR>(extOutMessageNode->impureOffset);
359
360 function->execute(tdbb, inMsg, outMsg);
361 }
362
363 return SuspendNode::execute(tdbb, request, exeState);
364 }
365
366 private:
367 const MessageNode* extInMessageNode;
368 const MessageNode* extOutMessageNode;
369 const ExtEngineManager::Function* function;
370 };
371
372 // External procedure node.
373 class ExtProcedureNode : public CompoundStmtNode

Callers 1

makeFunctionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected