#include <ivd-fsevent.h>


Definition at line 96 of file hpux/ivd-fsevent.h.
Public Member Functions | |
| FSEvMgrThrd (int a_fd) | |
| Release list thread constructor. | |
| ~FSEvMgrThrd () | |
| Release list thread destructor. | |
| void | SendReply (UInt16_t a_status, hsm_req_t *a_req) |
| virtual void | Run (void *arg) |
| Release list thread run method. | |
| FSEvMgrThrd (int a_fd) | |
| ~FSEvMgrThrd () | |
| void | SendReply (UInt16_t a_status, ivd_req_t *a_req) |
| virtual void | Run (void *arg) |
Public Attributes | |
| log_CLASSID_m | |
Private Attributes | |
| int | m_fd |
| i_Service_var | m_iService |
| FSEvMgrThrd::FSEvMgrThrd | ( | int | a_fd | ) |
Release list thread constructor.
Definition at line 144 of file hpux/ivd-fsevent.cpp.
References log_FUNC_m.
00144 : 00145 m_fd(a_fd){ 00146 00147 log_FUNC_m(FSEvMgrThrd); 00148 }
| FSEvMgrThrd::~FSEvMgrThrd | ( | ) |
Release list thread destructor.
Definition at line 153 of file hpux/ivd-fsevent.cpp.
References log_FUNC_m.
00153 { 00154 log_FUNC_m(~FSEvMgrThrd); 00155 }
| FSEvMgrThrd::FSEvMgrThrd | ( | int | a_fd | ) |
| FSEvMgrThrd::~FSEvMgrThrd | ( | ) |
Definition at line 275 of file hpux/ivd-fsevent.cpp.
References dbg_NORM, errno, g_fd, hsm_req_t::hdr, log_DBG_m, log_ERR_m, log_FUNC_m, hsm_req_hdr_t::reqid, size, and hsm_req_hdr_t::status.
Referenced by Run(), and SendReply().
00275 { 00276 00277 log_FUNC_m(SendReply); 00278 00279 int size = sizeof(hsm_req_t); 00280 00281 log_DBG_m(dbg_NORM, "regid: " << a_req->hdr.reqid 00282 << " a_status: " << a_req->hdr.reqid, a_status); 00283 00284 a_req->hdr.status = a_status; 00285 00286 int ret = write(g_fd, a_req, size); 00287 if (ret < 0 || ret < size) { 00288 log_ERR_m("Sending Reply failed. Errno: " << errno); 00289 00290 //throw ivd_Error(ie_ERRORWRITE, strerror(errno)); 00291 //pgtoni: 00292 //This throw is not cached in Run, will change it to log_ERR_m 00293 log_ERR_m(strerror(errno)); 00294 } 00295 }

| void FSEvMgrThrd::Run | ( | void * | arg | ) | [virtual] |
Release list thread run method.
Reimplemented from cmn_Thread.
Definition at line 160 of file hpux/ivd-fsevent.cpp.
References PreMountsMgr::Add(), hsm_req_t::cancel, cmn_Num2Str(), hsm_req_log_error_t::code, hsm_req_pre_mount_t::comm_minor, dbg_LOW, PreMountsMgr::Del(), hsm_req_log_error_t::dev_major, hsm_req_pre_mount_t::dev_major, hsm_req_log_error_t::dev_minor, hsm_req_pre_mount_t::dev_minor, hsm_req_t::error, evt_ERROR, evt_WARNING, g_cmn, g_runHSM, ivd_BaseException::GetDescription(), ivd_BaseException::GetError(), ivd_BaseException::GetFriendly(), hsm_req_t::hdr, HSM_DEVNAME, HSM_ERR_BOTTOM_MOUNT_d, HSM_ERR_HSM_CLOSED_d, HSM_ERR_REPLY_d, HSM_EVT_CANCEL_REQ, HSM_EVT_LOG_ERROR, HSM_EVT_PRE_MOUNT, HSM_WRN_HSM_BUSY_d, i_IVDHSM, ipc_EXEC_m, log_DBG_m, log_ERR_m, log_FUNC_m, log_WriteEvent(), m_fd, cmn_SysInfo::m_hostName, ivd_Product::m_nameShortLC, MAX_EVT_BUFSIZE, hsm_req_t::pre_mount, cmn_Global::prod, hsm_req_cancel_req_t::reqid, ipc_Corba::ResolveSvc(), SendReply(), cmn_Global::si, size, and hsm_req_hdr_t::type.
00160 { 00161 00162 log_FUNC_m(Run); 00163 00164 int size; 00165 char buf[MAX_EVT_BUFSIZE]; 00166 hsm_req_t *req; 00167 00168 while ((size = read(m_fd, buf, MAX_EVT_BUFSIZE)) > 0) { 00169 req = (hsm_req_t *) buf; 00170 if (req->hdr.type == HSM_EVT_PRE_MOUNT) { 00171 00172 string callDev = 00173 string("/dev/" HSM_DEVNAME "/") + 00174 cmn_Num2Str(req->pre_mount.comm_minor); 00175 00176 string fileUUID = 00177 cmn_Num2Str(req->pre_mount.dev_major) + 00178 string(":") + 00179 cmn_Num2Str(req->pre_mount.dev_minor); 00180 00181 log_WriteEvent("Mount request (comm device: " + callDev + ").", 00182 "", 0, fileUUID); 00183 00184 try { 00185 g_premountMgr.Add(fileUUID, req->hdr); 00186 00187 if (g_runHSM) { 00188 i_StringList_t seqArgum; 00189 seqArgum.length(2); 00190 seqArgum[0] = CORBA::string_dup(callDev.c_str()); 00191 seqArgum[1] = CORBA::string_dup(fileUUID.c_str()); 00192 00193 log_DBG_m(dbg_LOW, "Starting ivd-hsm on " << callDev 00194 << " for " << fileUUID << "." ); 00195 00196 ipc_EXEC_m( 00197 CORBA::Object_var obj = 00198 ipc_Corba::ResolveSvc(g_cmn.si.m_hostName); 00199 i_Service_var iService = i_Service::_narrow(obj); 00200 00201 iService->Execute(i_IVDHSM, seqArgum); 00202 ); 00203 log_DBG_m(dbg_LOW, "Execute succeeded."); 00204 } 00205 else { 00206 log_DBG_m(dbg_LOW, 00207 "HSM not started - start manually: " << endl << 00208 "ivd-hsm " << callDev << " " << fileUUID); 00209 } 00210 } 00211 catch (ivd_Exception &ie) { 00212 log_ERR_m("Caught ERROR " 00213 << ie.GetError() << " " << ie.GetDescription()); 00214 ostringstream sstr; 00215 sstr << "Starting HSM failed (" << ie.GetFriendly() << ")."; 00216 log_WriteEvent(evt_ERROR, sstr.str(), "", 0, fileUUID); 00217 SendReply(ie.GetError(), req); 00218 } 00219 catch (std::exception &se) { 00220 log_ERR_m("Caught std::exception ERROR " << se.what()); 00221 ostringstream sstr; 00222 sstr << "Starting HSM failed (" << se.what() << ")."; 00223 log_WriteEvent(evt_ERROR, sstr.str(), "", 0, fileUUID); 00224 SendReply(HSM_ERR_REPLY_d, req); 00225 } 00226 catch (...) { 00227 log_ERR_m("Caught unknown exception"); 00228 ostringstream sstr; 00229 sstr << "Starting HSM failed (unknown exception)."; 00230 log_WriteEvent(evt_ERROR, sstr.str(), "", 0, fileUUID); 00231 SendReply(HSM_ERR_REPLY_d, req); 00232 } 00233 00234 } else if (req->hdr.type == HSM_EVT_CANCEL_REQ) { 00235 g_premountMgr.Del(req->cancel.reqid); 00236 } else if (req->hdr.type == HSM_EVT_LOG_ERROR) { 00237 string fileUUID = 00238 cmn_Num2Str(req->error.dev_major) + 00239 string(":") + 00240 cmn_Num2Str(req->error.dev_minor); 00241 00242 switch (req->error.code) { 00243 case HSM_ERR_HSM_CLOSED_d: 00244 log_WriteEvent(evt_ERROR, 00245 "Premature HSM exit. Unmount and run " 00246 + g_cmn.prod.m_nameShortLC + "check!", 00247 "", 0, fileUUID); 00248 break; 00249 case HSM_ERR_BOTTOM_MOUNT_d: 00250 log_WriteEvent(evt_ERROR, 00251 "Failed to mount bottom file system. See dmesg for details.", 00252 "", 0, fileUUID); 00253 break; 00254 case HSM_WRN_HSM_BUSY_d: 00255 log_WriteEvent(evt_WARNING, 00256 "Read of event messages were stopped or slowed down by HSM. See dmesg for details.", 00257 "", 0, fileUUID); 00258 break; 00259 default : 00260 ostringstream sstr; 00261 sstr << "Got unknown error code from HSMFS: " 00262 << req->error.code; 00263 log_WriteEvent(evt_ERROR, sstr.str(), "", 0, fileUUID); 00264 log_ERR_m("Got unknown error code from HSMFS:" 00265 << req->error.code << " for " << fileUUID); 00266 } 00267 } 00268 else { 00269 log_ERR_m("FSeventMgr caught " << req->hdr.type << " event"); 00270 } 00271 } 00272 }

Definition at line 274 of file linux/ivd-fsevent.cpp.
References ivd_req_hdr_t::code, dbg_NORM, errno, g_fd, ivd_req_t::hdr, log_DBG_m, log_ERR_m, log_FUNC_m, ivd_req_hdr_t::reqid, and SendReply().
00274 { 00275 00276 log_FUNC_m(SendReply); 00277 00278 int size = sizeof(ivd_req_t); 00279 00280 log_DBG_m(dbg_NORM, "regid: " << a_req->hdr.reqid 00281 << " a_status: " << a_status); 00282 00283 a_req->hdr.code = a_status; 00284 00285 int ret = write(g_fd, a_req, size); 00286 if (ret < 0 || ret < size) { 00287 log_ERR_m("Sending Reply failed. Errno: " << errno); 00288 00289 //throw ivd_Error(ie_ERRORWRITE, strerror(errno)); 00290 //pgtoni: 00291 //This throw is not cached in Run, will change it to log_ERR_m 00292 log_ERR_m(strerror(errno)); 00293 } 00294 }

| virtual void FSEvMgrThrd::Run | ( | void * | arg | ) | [virtual] |
Reimplemented from cmn_Thread.
int FSEvMgrThrd::m_fd [private] |
i_Service_var FSEvMgrThrd::m_iService [private] |
Definition at line 100 of file hpux/ivd-fsevent.h.
1.5.6