main.cpp
上传用户:chn_coc
上传日期:2007-12-20
资源大小:563k
文件大小:2k
源码类别:

P2P编程

开发平台:

Windows_Unix

  1. // ------------------------------------------------
  2. // File : main.cpp
  3. // Date: 4-apr-2002
  4. // Author: giles
  5. // Desc: 
  6. // see .cpp for details
  7. //
  8. // (c) 2002 peercast.org
  9. // ------------------------------------------------
  10. // This program is free software; you can redistribute it and/or modify
  11. // it under the terms of the GNU General Public License as published by
  12. // the Free Software Foundation; either version 2 of the License, or
  13. // (at your option) any later version.
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. // GNU General Public License for more details.
  18. // ------------------------------------------------
  19. #include <stdarg.h>
  20. #include "stdio.h"
  21. #include "channel.h"
  22. #include "servent.h"
  23. #include "servmgr.h"
  24. #include "unix/usys.h"
  25. #include <sys/types.h>
  26. #include <unistd.h>
  27. #include <signal.h>
  28. #include <stdlib.h>
  29. #include "peercast.h"
  30. // ----------------------------------
  31. String iniFileName;
  32. bool quit=false;
  33. // ---------------------------------
  34. class MyPeercastInst : public PeercastInstance
  35. {
  36. public:
  37. virtual Sys * APICALL createSys()
  38. {
  39. return new USys();
  40. }
  41. };
  42. // ---------------------------------
  43. class MyPeercastApp : public PeercastApplication
  44. {
  45. public:
  46. virtual const char * APICALL getIniFilename()
  47. {
  48. return iniFileName;
  49. }
  50. virtual const char *APICALL getClientTypeOS() 
  51. {
  52. return PCX_OS_MACOSX;
  53. }
  54. virtual void APICALL printLog(LogBuffer::TYPE t, const char *str)
  55. {
  56. if (t != LogBuffer::T_NONE)
  57. printf("[%s] ",LogBuffer::getTypeStr(t));
  58. printf("%sn",str);
  59. }
  60. };
  61. // ----------------------------------
  62. void setSettingsUI(){}
  63. // ----------------------------------
  64. void showConnections(){}
  65. // ----------------------------------
  66. void PRINTLOG(LogBuffer::TYPE type, const char *fmt,va_list ap)
  67. {
  68. }
  69. // ----------------------------------
  70. void sigProc(int sig)
  71. {
  72. switch (sig)
  73. {
  74. case 2:
  75. if (!quit)
  76. LOG_DEBUG("Received QUIT signal");
  77. quit=true;
  78. break;
  79. }
  80. }
  81. // ----------------------------------
  82. int main(int argc, char* argv[])
  83. {
  84. iniFileName.set("peercast.ini");
  85. if (argc > 2)
  86. if (strcmp(argv[1],"-inifile")==0)
  87. iniFileName.setFromString(argv[2]);
  88. peercastInst = new MyPeercastInst();
  89. peercastApp = new MyPeercastApp();
  90. peercastInst->init();
  91. signal(SIGINT, sigProc); 
  92. while (!quit)
  93. sys->sleep(1000);
  94. peercastInst->saveSettings();
  95. peercastInst->quit();
  96. return 0;
  97. }