Samchon Framework for CPP  1.0.0
FlashPolicyServer.cpp
1 #include <samchon/protocol/FlashPolicyServer.hpp>
2 
3 #include <thread>
4 #include <boost/asio.hpp>
5 
6 #include <string>
7 #include <samchon/library/XML.hpp>
8 
9 using namespace std;
10 using namespace samchon;
11 using namespace samchon::library;
12 using namespace samchon::protocol;
13 
14 FlashPolicyServer::FlashPolicyServer()
16  (
17  make_shared<XML>
18  (
19  std::string() +
20  "<cross-domain-policy>\n" +
21  " <allow-access-from domain='*' to-ports='*' />\n" +
22  "</cross-domain-policy>"
23  )
24  )
25 {
26 }
28 {
29  this->policy = policy;
30 }
31 
33 {
34  boost::asio::io_service ioService;
35  boost::asio::ip::tcp::endpoint endPoint(boost::asio::ip::tcp::v4(), 843);
36  boost::asio::ip::tcp::acceptor acceptor(ioService, endPoint);
37 
38  while (true)
39  {
40  boost::asio::ip::tcp::socket *socket = new boost::asio::ip::tcp::socket(ioService);
41  acceptor.accept(*socket);
42 
43  thread(&FlashPolicyServer::accept, this, socket).detach();
44  }
45 }
46 void FlashPolicyServer::accept(boost::asio::ip::tcp::socket *socket)
47 {
48  string data = "<?xml version=\"1.0\"?>\n" + policy->toString();
49  vector<unsigned char> piece;
50  boost::system::error_code error;
51 
52  while (true)
53  {
54  piece.assign(1000, NULL);
55  socket->read_some(boost::asio::buffer(piece), error);
56 
57  boost::system::error_code error;
58  socket->write_some(boost::asio::buffer(data), error);
59 
60  break;
61  }
62  socket->close();
63 
64  delete socket;
65 }
Definition: RWMutex.hpp:4
Package of libraries.
Definition: library.hpp:84
void accept(Socket *)
Accept client.
std::shared_ptr< library::XML > policy
cross-domain-policy
Package of network protocol and libraries.
Definition: protocol.hpp:185
XML is a class representing xml object.
Definition: XML.hpp:72
Top level namespace of products built from samchon.
Definition: ByteArray.hpp:7