util.cpp
上传用户:egreat
上传日期:2007-07-13
资源大小:29k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. #include "config.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. #include <sstream>
  6. #include <loki/Factory.h>
  7. #include <boost/scoped_ptr.hpp>
  8. #include "response.h"
  9. #include "stock.h"
  10. using namespace std;
  11. namespace StockMarket
  12. {
  13. bool is_file_exist(const string& filename)
  14. {
  15. bool isOpen;
  16. ifstream ifs;
  17. ifs.open(filename.c_str());
  18. isOpen = ifs.is_open();
  19. ifs.close();
  20. return isOpen;
  21. }
  22. bool stockcode_is_valid(const uchar * s)
  23. {
  24. bool valid = true;
  25. for(int i = 0; i < MarketInfo::StocksCodeLen; ++i)
  26. {
  27. if(s[i] < '0' || s[i] > '9')
  28. {
  29. valid = false;
  30. break;
  31. }
  32. }
  33. return valid;
  34. }
  35. const uchar * stock_code_search (const uchar * str, unsigned int len)
  36. {
  37. const uchar *cp = str;
  38. while (len -- > 0)
  39. {
  40. if(stockcode_is_valid(cp))
  41. return cp;
  42. cp++;
  43. }
  44. return 0;
  45. }
  46. void log_packet(const char* data, size_t len)
  47. {
  48. const string path = "F:\Develop\stock\data\exc_log\exc";
  49. string filename;
  50. for(int i = 0; i < 1000; i++)
  51. {
  52. stringstream ss;
  53. ss << i << ".dat";
  54. filename = path + ss.str();
  55. if(!is_file_exist(filename))
  56. {
  57. ofstream ofs(filename.c_str(),  ios::out | ios::binary);
  58. ofs.write(data, len);
  59. break;
  60. }
  61. }
  62. }
  63. void test_packet_from_file(const string& filename )
  64. {
  65. uchar temp[10 * 1024];
  66. uchar *pData = &temp[0];
  67. const string path = "F:\Develop\stock\data\exc_log\";
  68. const string fullname = path + filename;
  69. fstream fs(fullname.c_str(), ios::in | ios::binary);
  70. if(!fs) return;
  71. fs.read((char*)pData, 10*1024);
  72. uint len = fs.gcount();
  73. ProcessResponsePacket(pData, len, true);
  74. }
  75. }