source: trunk/src/seismic_processing/glass/src/modules/Glock/GlockMod.cpp @ 3212

Revision 3212, 3.0 KB checked in by paulf, 11 years ago (diff)

sync from hydra_proj circa Oct 2007

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1// Mod.cpp
2
3#include <windows.h>
4extern "C" {
5#include "utility.h"
6}
7
8#include "GlockMod.h"
9#include "ISolve.h"
10#include "glock.h"
11
12extern "C"   __declspec(dllexport) IModule * CreateModule() {
13        IModule *mod = (IModule *)new CMod();
14        return mod;
15}
16
17CMod *pMod;
18
19//---------------------------------------------------------------------------------------Mod
20// Standard constructor
21CMod::CMod() {
22        pTT = 0;
23        pGlint = 0;
24        pSolve = 0;
25        pTT = 0;
26        pMod = this;
27  iNumLocatorIterations = 1; 
28  pGlock = NULL;
29}
30
31//---------------------------------------------------------------------------------------~Mod
32// Standard destructor
33CMod::~CMod() {
34        if(pSolve)
35                pSolve->Release();
36  if(pGlock)
37    delete(pGlock);
38}
39
40//---------------------------------------------------------------------------------------Action
41bool CMod::Action(IMessage *msg) {
42        IMessage *m;
43        char *str;
44        char ent[32];
45        char msk[16];
46        int res;
47
48        if(msg->Is("ShutDown")) {
49                return true;
50        }
51
52        if(msg->Is("Initialize")) {
53                // Get glint interface
54                m = CreateMessage("ITravelTime");
55                Dispatch(m);
56                pTT = (ITravelTime *)m->getPtr("Interface");
57                m->Release();
58                if(!pTT) {
59                        msg->setInt("Res", 1);
60                        return true;
61                }
62
63                m = CreateMessage("IGlint");
64                Dispatch(m);
65                pGlint = (IGlint *)m->getPtr("IGlint");
66                m->Release();
67                if(!pGlint) {
68                        msg->setInt("Res", 2);
69                        return true;
70                }
71
72                m = CreateMessage("ISolve");
73                Dispatch(m);
74                pSolve = (ISolve *)m->getPtr("ISolve");
75                m->Release();
76                if(!pSolve) {
77                        msg->setInt("Res", 3);
78                        return true;
79                }
80
81    pGlock = new CGlock(pMod);
82
83                return true;
84        }
85
86        if(msg->Is("Locate")) {
87                if(!pGlint) {
88                        msg->setInt("Res", 1);
89                        return true;
90                }
91                str = msg->getStr("Quake");
92                if(!str) {
93                        msg->setInt("Res", 2);
94                        return true;
95                }
96                strcpy(ent, str);
97                str = msg->getStr("Mask");
98
99                if(!str) {
100                        res = Locate(ent, 0);
101                } else {
102                        strcpy(msk, str);
103                        res = Locate(ent, msk);
104                }
105
106                msg->setInt("Res", res);
107                return true;
108        }
109        if(msg->Is("NumLocatorIterations")) 
110  {
111    iNumLocatorIterations = msg->getInt("Num");
112    return true;
113  }
114        if(msg->Is("LocatorDebugLevel")) 
115  {
116    DebugOutputStruct dosDebug;
117    int iLevel;
118    memset(&dosDebug, 0, sizeof(dosDebug));
119   
120    iLevel = msg->getInt("Level");
121    if(iLevel < DEBUG_MAX_LEVEL || iLevel > DEBUG_MIN_LEVEL)
122    {
123      CDebug::Log(DEBUG_MINOR_ERROR, "Error parsing config file line: %s %d...\n", 
124                  "LocatorDebugLevel", iLevel);
125      return(true);
126    }
127    dosDebug.bOTF = msg->getInt("OTF");
128    dosDebug.bOTD = msg->getInt("OTD");
129    dosDebug.bOTE = msg->getInt("OTE");
130    dosDebug.bOTS = msg->getInt("OTS");
131    dosDebug.bOSM = msg->getInt("OSM");
132    CDebug::SetLevelParams(iLevel, &dosDebug);
133    return(true);
134        }
135
136        return false;
137}
138
139//---------------------------------------------------------------------------------------Locate
140int CMod::Locate(char *ent, char *mask) {
141        int res;
142
143  if(!pGlock)
144  {
145    CDebug::Log(DEBUG_MAJOR_ERROR, "Error locator class unavailable.\n");
146    return(1);
147  }
148
149        if(mask)
150                res = pGlock->Locate(ent, mask);
151        else
152                res = pGlock->Locate(ent);
153        return res;
154}
Note: See TracBrowser for help on using the repository browser.