📄 banker.cpp
字号:
#include <fstream.h>
#include <iostream.h>
#include "Banker.h"
extern ofstream ofsLog1;
extern ofstream ofsLog2;
Banker::Banker(int i1, int i2, int i3)
{
ofsLog2 << "constructing banker" << endl;
RMax.iFiles = i1;
RMax.iPages = i2;
RMax.iMutex = i3;
RInUse.iFiles = 0;
RInUse.iPages = 0;
RInUse.iMutex = 0;
ofsLog2 << "Banker: RMax fpm " << i1 << i2 << i3 << endl;
}
void Banker:: helloWorld()
{
cout << "Banker:: Hello World!" << endl;
}
void Banker :: showLimits()
{
cout << "Banker:: showLimits currently ";
cout << "(" << RInUse.iFiles << ", " << RInUse.iPages << ", " << RInUse.iMutex << ")";
cout << " max ";
cout << "(" << RMax.iFiles << ", " << RMax.iPages << ", " << RMax.iMutex << ")";
cout << endl;
}
void Banker::closeAccount(int iPid)
{
ofsLog1 << "Banker::close " << iPid << "...";
ofsLog2 << "Banker::close " << iPid << "...";
if(RMapMax.find(iPid)== RMapMax.end())
{
ofsLog1 << "...NO SUCH PID." << endl;
ofsLog2 << "...NO SUCH PID." << endl;
throw BankerUnsafePidException();
}
ofsLog1 << "...found it." << endl;
ofsLog2 << "...found it." << endl;
RInUse.iFiles -= RMapInUse[iPid].iFiles;
RInUse.iPages -= RMapInUse[iPid].iPages;
RInUse.iMutex -= RMapInUse[iPid].iMutex;
}
void Banker::openAccount(int iPid, int iF, int iP, int iM)
{
ofsLog1 << "Banker::openAccount() ";
ofsLog1 << iPid << " " << iF << " " << iP << " " << iM << endl;
ofsLog2 << "Banker::openAccount() ";
ofsLog2 << iPid << " " << iF << " " << iP << " " << iM << endl;
RMapMax[iPid].iFiles = iF;
RMapMax[iPid].iPages = iP;
RMapMax[iPid].iMutex = iM;
RMapInUse[iPid].iFiles = 0;
RMapInUse[iPid].iPages = 0;
RMapInUse[iPid].iMutex = 0;
ofsLog2 << "Banker::openAccount for pid " << iPid << endl;
ofsLog2 << "...max files " << RMapMax[iPid].iFiles << endl;
ofsLog2 << "...max pages " << RMapMax[iPid].iPages << endl;
ofsLog2 << "...max mutex " << RMapMax[iPid].iMutex << endl;
ofsLog2 << "...current files " << RMapInUse[iPid].iFiles << endl;
ofsLog2 << "...current pages " << RMapInUse[iPid].iPages << endl;
ofsLog2 << "...current mutex " << RMapInUse[iPid].iMutex << endl;
ofsLog2 << "Banker::openAccount...RMapMax.size now " << RMapMax.size() << endl;
}
void cout3(int i1, int i2, int i3)
{
ofsLog2 << " " << i1 << " " << i2 << " " << i3 << " ";
}
void Banker::isSafe(int iPid, int iF, int iP, int iM)
{
// take your best shot...
}
void Banker::request(int iPid, int iF, int iP, int iM)
{
ofsLog2 << " Banker::request()" << iPid;
ofsLog2 << " f " << iF << " p " << iP << " m " << iM << endl;
ofsLog1 << " Banker::request()" << iPid;
ofsLog1 << " f " << iF << " p " << iP << " m " << iM << endl;
isSafe(iPid, iF, iP, iM);
RMapInUse[iPid].iFiles += iF;
RMapInUse[iPid].iPages += iP;
RMapInUse[iPid].iMutex += iM;
RInUse.iFiles += iF;
RInUse.iPages += iP;
RInUse.iMutex += iM;
ofsLog2 << " NOW USING " << RInUse.iFiles;
ofsLog2 << " " << RInUse.iPages;
ofsLog2 << " " << RInUse.iMutex << endl;
ofsLog1 << " NOW USING " << RInUse.iFiles;
ofsLog1 << " " << RInUse.iPages;
ofsLog1 << " " << RInUse.iMutex << endl;
}
Banker :: ~Banker() {}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -