481519a4f521a1fd47fa9dcb34ad533f3bfc9a97
[platform/framework/web/wrt-plugins-common.git] / src / wrt-popup / wrt / PopupSerializer.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16
17 #include "PopupSerializer.h"
18
19 #include <memory>
20
21 namespace Wrt {
22 namespace PopupSerializer {
23
24 void appendArg(int arg, DPL::BinaryQueue &buffer)
25 {
26     size_t argSize = sizeof(arg);
27     buffer.AppendCopy(&argSize, sizeof(argSize));
28     buffer.AppendCopy(&arg, sizeof(arg));
29 }
30
31 void appendArg(const std::string &arg, DPL::BinaryQueue &buffer)
32 {
33     size_t argSize = arg.size();
34     buffer.AppendCopy(&argSize, sizeof(argSize));
35     buffer.AppendCopy(arg.c_str(), argSize);
36 }
37
38 int getIntArg(DPL::BinaryQueue &buffer)
39 {
40     int result;
41     size_t argSize;
42     buffer.FlattenConsume(&argSize, sizeof(argSize));
43     buffer.FlattenConsume(&result, argSize);
44     //TODO: what if argSize != sizeof(int)
45     //This should not be problem if this is run on the same machine.
46     return result;
47 }
48
49 std::string getStringArg(DPL::BinaryQueue &buffer)
50 {
51     std::string::size_type size;
52     buffer.FlattenConsume(&size, sizeof(size));
53     std::unique_ptr<char[]> str(new char[size]);
54     buffer.FlattenConsume(str.get(), size);
55     return std::string(str.get(), str.get() + size);
56 }
57
58 }
59 } // Wrt