@@ -47,6 +47,42 @@ namespace brynet { namespace net {
4747 virtual size_t size () = 0;
4848 };
4949
50+ class StringSendMsg : public SendableMsg
51+ {
52+ public:
53+ explicit StringSendMsg (const char * buffer, size_t len)
54+ :
55+ mMsg(buffer, len)
56+ {}
57+
58+ explicit StringSendMsg (std::string buffer)
59+ :
60+ mMsg(std::move(buffer))
61+ {}
62+
63+ const void * data () override
64+ {
65+ return static_cast <const void *>(mMsg .data ());
66+ }
67+ size_t size () override
68+ {
69+ return mMsg .size ();
70+ }
71+
72+ private:
73+ std::string mMsg ;
74+ };
75+
76+ static SendableMsg::Ptr MakeStringMsg (const char * buffer, size_t len)
77+ {
78+ return std::make_shared<StringSendMsg>(buffer, len);
79+ }
80+
81+ static SendableMsg::Ptr MakeStringMsg (std::string buffer)
82+ {
83+ return std::make_shared<StringSendMsg>(std::move (buffer));
84+ }
85+
5086 class TcpConnection : public Channel ,
5187 public brynet::base::NonCopyable,
5288 public std::enable_shared_from_this<TcpConnection>
@@ -162,40 +198,14 @@ namespace brynet { namespace net {
162198 size_t len,
163199 PacketSendedCallback&& callback = nullptr )
164200 {
165- send (std::make_shared<std::string> (buffer, len), std::move (callback));
201+ send (MakeStringMsg (buffer, len), std::move (callback));
166202 }
167203
168204 void send (
169- const std::shared_ptr<std:: string>& packet ,
205+ std::string buffer ,
170206 PacketSendedCallback&& callback = nullptr )
171207 {
172- class StringSendMsg : public SendableMsg
173- {
174- public:
175- explicit StringSendMsg (std::shared_ptr<std::string>&& msg)
176- :
177- mMsg(std::move(msg))
178- {}
179- explicit StringSendMsg (const std::shared_ptr<std::string>& msg)
180- :
181- mMsg(msg)
182- {}
183-
184- const void * data () override
185- {
186- return static_cast <const void *>(mMsg ->data ());
187- }
188-
189- size_t size () override
190- {
191- return mMsg ->size ();
192- }
193-
194- private:
195- std::shared_ptr<std::string> mMsg ;
196- };
197-
198- send (std::make_shared<StringSendMsg>(packet), std::move (callback));
208+ send (MakeStringMsg (std::move (buffer)), std::move (callback));
199209 }
200210
201211 // setDataCallback(std::function<void(brynet::base::BasePacketReader&)>)
0 commit comments