Local<Object> EventStream::Event::v8Object() { NanEscapableScope(); Local<Object> eventPayload(NanNew<Object>()); eventPayload->Set(NanNew("key"), v8Value(entryEventPtr->getKey())); eventPayload->Set(NanNew("oldValue"), v8Value(entryEventPtr->getOldValue())); eventPayload->Set(NanNew("newValue"), v8Value(entryEventPtr->getNewValue())); return NanEscapeScope(eventPayload); }
Datum ExperimentPackager::packageExperiment(const boost::filesystem::path filename) { namespace bf = boost::filesystem; IncludedFilesParser parser(filename.string()); std::string working_path_string; Datum include_files; try{ parser.parse(false); working_path_string = parser.getWorkingPathString(); include_files = parser.getIncludedFilesManifest(); } catch(std::exception& e){ merror(M_PARSER_MESSAGE_DOMAIN, "Experiment packaging failed: %s", e.what()); return Datum(); } Datum eventPayload(M_DICTIONARY, M_EXPERIMENT_PACKAGE_NUMBER_ELEMENTS); { // Use getDocumentData to get the experiment file with any preprocessing and/or // XInclude substitutions already applied std::vector<xmlChar> fileData; parser.getDocumentData(fileData); Datum contents(reinterpret_cast<char *>(&(fileData.front())), fileData.size()); eventPayload.addElement(M_PACKAGER_EXPERIMENT_STRING, packageSingleFile(contents, XMLParser::squashFileName(filename.string()))); } if(include_files.getNElements() >= 1) { Datum mediaFilesPayload(M_LIST, include_files.getNElements()); for(int i=0; i< include_files.getNElements(); ++i) { // DDC there seem to be a lot of unnecessary steps here // simplified hackily for the moment std::string mediaName(include_files.getElement(i).getString()); bf::path mediaPath = expandPath(working_path_string, mediaName); //bf::path mediaPath(include_files.getElement(i).getElement(M_PACKAGER_FULL_NAME).getString()); //std::string mediaName(include_files.getElement(i).getElement(M_PACKAGER_RELATIVE_NAME).getString()); Datum mediaElement = packageSingleFile(mediaPath, mediaName); if(!mediaElement.isUndefined()) { mediaFilesPayload.addElement(mediaElement); } else { merror(M_FILE_MESSAGE_DOMAIN, "Can't find file: %s", mediaPath.string().c_str()); Datum undef; return undef; } } eventPayload.addElement(M_PACKAGER_MEDIA_BUFFERS_STRING, mediaFilesPayload); } return SystemEventFactory::systemEventPackage(M_SYSTEM_DATA_PACKAGE, M_EXPERIMENT_PACKAGE, eventPayload); }