thcodectx.hpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. #ifndef __THCODECTX__
  14. #define __THCODECTX__
  15. #include "eclhelper.hpp"
  16. #include "deftype.hpp"
  17. #include "dadfs.hpp"
  18. #include "thgraph.hpp"
  19. #ifdef _WIN32
  20. #ifdef THORCODECTX_EXPORTS
  21. #define thcodectx_decl __declspec(dllexport)
  22. #else
  23. #define thcodectx_decl __declspec(dllimport)
  24. #endif
  25. #else
  26. #define thcodectx_decl
  27. #endif
  28. interface ILoadedDllEntry;
  29. interface IConstWUResult;
  30. interface IWUResult;
  31. class CJobBase;
  32. class thcodectx_decl CThorCodeContextBase : public CSimpleInterface, implements ICodeContextExt
  33. {
  34. protected:
  35. Linked<IUserDescriptor> userDesc;
  36. ILoadedDllEntry &querySo;
  37. CJobBase &job;
  38. void expandLogicalName(StringBuffer & fullname, const char * logicalName);
  39. IConstWUResult * getResult(const char * name, unsigned sequence);
  40. IWUResult *updateResult(const char *name, unsigned sequence);
  41. public:
  42. IMPLEMENT_IINTERFACE_USING(CSimpleInterface);
  43. CThorCodeContextBase(CJobBase &job, ILoadedDllEntry &_querySo, IUserDescriptor &_userDesc);
  44. // ICodeContext
  45. virtual const char *loadResource(unsigned id);
  46. virtual char *getWuid();
  47. virtual char *getExpandLogicalName(const char * logicalName);
  48. virtual IUserDescriptor *queryUserDescriptor() { return userDesc; }
  49. virtual unsigned getNodes() { assertex(false); return (unsigned)-1; }
  50. virtual unsigned getNodeNum() { assertex(!"getNodeNum should not be called on the master"); return (unsigned)-1; }
  51. virtual char *getFilePart(const char *logicalName, bool create=false) { assertex(false); return NULL; }
  52. virtual unsigned __int64 getFileOffset(const char *logicalName) { assertex(false); return 0; }
  53. virtual char *getJobName();
  54. virtual char *getJobOwner();
  55. virtual char *getClusterName();
  56. virtual unsigned getPriority() const { return 0; }
  57. virtual char *getPlatform() { return strdup("thor"); };
  58. virtual char *getEnv(const char *name, const char *defaultValue) const
  59. {
  60. const char *val = getenv(name);
  61. if (val)
  62. return strdup(val);
  63. else if (defaultValue)
  64. return strdup(defaultValue);
  65. else
  66. return strdup("");
  67. }
  68. virtual char *getOS()
  69. {
  70. #ifdef _WIN32
  71. return strdup("windows");
  72. #else
  73. return strdup("linux");
  74. #endif
  75. }
  76. virtual unsigned logString(const char *text) const
  77. {
  78. if (text && *text)
  79. {
  80. DBGLOG("USER: %s", text);
  81. return strlen(text);
  82. }
  83. else
  84. return 0;
  85. }
  86. virtual const IContextLogger &queryContextLogger() const
  87. {
  88. return job.queryContextLogger();
  89. }
  90. virtual void executeGraph(const char * graphName, bool realThor, size32_t parentExtractSize, const void * parentExtract) { UNIMPLEMENTED; }
  91. virtual char *getGroupName(); // thorlib.group()
  92. virtual char *queryIndexMetaData(char const * lfn, char const * xpath) { UNIMPLEMENTED; }
  93. virtual IEngineRowAllocator * getRowAllocator(IOutputMetaData * meta, unsigned activityId) const;
  94. virtual const char *cloneVString(const char *str) const;
  95. virtual const char *cloneVString(size32_t len, const char *str) const;
  96. virtual IEclGraphResults *resolveLocalQuery(__int64 gid);
  97. virtual IThorChildGraph * resolveChildQuery(__int64 activityId, IHThorArg * colocal);
  98. virtual void getRowXML(size32_t & lenResult, char * & result, IOutputMetaData & info, const void * row, unsigned flags);
  99. virtual IConstWUResult *getExternalResult(const char * wuid, const char *name, unsigned sequence) { throwUnexpected(); }
  100. virtual IConstWUResult *getResultForGet(const char *name, unsigned sequence) { throwUnexpected(); }
  101. virtual const void * fromXml(IEngineRowAllocator * rowAllocator, size32_t len, const char * utf8, IXmlToRowTransformer * xmlTransformer, bool stripWhitespace);
  102. virtual IEngineContext *queryEngineContext() { return NULL; }
  103. virtual char *getDaliServers();
  104. virtual IWorkUnit *updateWorkUnit() const { throwUnexpected(); }
  105. };
  106. #endif