npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ewd-qoper8-gtm

v2.6.1

Published

Integrates the GT.M database with ewd-qoper8 worker processes

Downloads

30

Readme

ewd-qoper8-gtm: Integrates ewd-qoper8 worker modules with the GT.M database

Build Status Coverage Status Dependency Status

Rob Tweed [email protected]
3 March 2016, M/Gateway Developments Ltd http://www.mgateway.com

Twitter: @rtweed

Google Group for discussions, support, advice etc: http://groups.google.co.uk/group/enterprise-web-developer-community

ewd-qoper8-gtm

This module may be used to simplifiy the integration of the Open Source GT.M database with ewd-qoper8 worker process modules. It additionally loads the ewd-document-store module to provide a very powerful and natural JavaScript interface to the underlying. Global Storage database engine within GT.M.

Installing

   npm install ewd-qoper8-gtm

You also MUST install the Node.js connection interface module for GT.M:

   npm install nodem

Using ewd-qoper8-gtm

This module should be used with the start event handler of your ewd-qoper8 worker module, eg:

this.on('start', function(isFirst) {
  var connectGTMTo = require('ewd-qoper8-gtm');
  connectGTMTo(this);
});

This will open an in-process connection to a local GT.M database.

Setting the correct environment for GT.M

You'll need to ensure that the correct environment variables have been created for GT.M. Typically this is done automatically through the .profile file or similar. If this is the case, simply establish the connection to GT.M as follows:

connectGTMTo(this);

However, you can optionally establish the appropriate environment variables by using a built-in function within ewd-qoper8-gtm which you can find within the repository. Look for the module file /lib/setEnvironment.js

You'll see that this will set up a default environment, based on the assumption that you used apt-get install fis-gtm to install GT.M. If this is how you installed GT.M, then there's a good chance that the default environment settings that the setEnvironment module will work for you. You can choose to use and apply these default settings by establishing the connection to GT.M as follows:

connectGTMTo(this, true);

If you need to modify any of the settings, you can do so by providing them within an object that you can pass to the connectGTMTo() function. You can specify any or all of the following GT.M-specific environment variables:

  • gtmdir
  • gtmver
  • gtmdist
  • gtmgbldir
  • gtmroutines
  • GTMCI
  • GTM_REPLICATION (defaults to 'off')

Any variables that you don't explicity specify will have default values calculated for you. Inspect the code in /lib/setEnvironment.js to see the rules and logic it applies to create these defaults.

So, for example, you could do this:

var env = {
  gtmdir: '/usr/lib/fis-gtm/V6.0-003_x86_64'
};
connectGTMTo(this, env);

What else does ewd-qoper8-gtm do?

ewd-qoper8-gtm will load and initialise the ewd-document-store module, creating a DocumentStore object within your worker.

Events emitted by ewd-qoper8-gtm

ewd-qoper8-gtm uses the worker's 'stop' event to ensure that the connection to GT.M is removed before the worker stops.

ewd-qoper8-gtm also emits 3 new events that you may handle:

  • dbOpened: fires after the connection to GT.M is opened within a worker process
  • dbClosed: fires after the connection to GT.M is closed within a worker process. The worker exits immediately after this event
  • DocumentStoreStarted: fires after the DocumentStore object has been instantiated. This is a good place to handle DocumentStore events, for example to maintain document indices.

The dbOpened event provides you with a single status object argument, allowing you to determine the success (or not) of opening the connection to GT.M, so you could add the following handler in your worker module, for example:

worker.on('dbOpened', function(status) {
  console.log('GT.M was opened by worker ' + process.pid + ': status = ' + JSON.stringify(status));
});

The dbClosed and DocumentStoreStarted events provide no arguments.

Example

See in the /examples directory.

gtm-express.js is an example Express / ewd-qoper8 master process scripts. gtm-module1.js is the associated worker module which connects to and uses GT.M, using the default environment settings.

Use these as a starting point for your own system.

Development

Requirements

There is a Vagrantfile and set of Chef cookbooks to use with Vagrant for easy testing on a Linux VM. It configures and install all dependencies.

$ bundle install
$ librarian-chef install
$ vagrant up

Testing

Unit tests

$ vagrant ssh
$ cd /vagrant
$ npm run test:unit

Integration tests

$ vagrant ssh
$ cd /vagrant
$ npm run test:integration

License

Copyright (c) 2016 M/Gateway Developments Ltd,
Reigate, Surrey UK.
All rights reserved.

http://www.mgateway.com
Email: [email protected]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0                           
                                                                       

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and
limitations under the License.