RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
js/banker_js.cc
00001 /* banker_js.cc
00002    Jeremy Barnes, 6 April 2011
00003    Copyright (c) 2011 Datacratic.  All rights reserved.
00004 
00005    Banker JS interface.
00006 */
00007 
00008 
00009 #include "banker_js.h"
00010 #include "soa/js/js_wrapped.h"
00011 #include "jml/utils/smart_ptr_utils.h"
00012 #include "rtbkit/core/banker/null_banker.h"
00013 
00014 using namespace std;
00015 using namespace v8;
00016 using namespace node;
00017 using namespace RTBKIT;
00018 
00019 namespace Datacratic {
00020 namespace JS {
00021 
00022 
00023 /*****************************************************************************/
00024 /* BANKER JS                                                                 */
00025 /*****************************************************************************/
00026 
00027 const char * BankerName = "Banker";
00028 
00029 struct BankerJS
00030     : public JSWrapped2<Banker, BankerJS, BankerName, rtbModule> {
00031 
00032     BankerJS(v8::Handle<v8::Object> This,
00033              const std::shared_ptr<Banker> & as
00034                   = std::shared_ptr<Banker>())
00035     {
00036         HandleScope scope;
00037         wrap(This, as);
00038     }
00039 
00040     BankerJS()
00041     {
00042     }
00043 
00044     static Handle<v8::Value>
00045     New(const Arguments & args)
00046     {
00047         try {
00048             new BankerJS(args.This());
00049             return args.This();
00050         } HANDLE_JS_EXCEPTIONS;
00051     }
00052 
00053     static void
00054     Initialize()
00055     {
00056         Persistent<FunctionTemplate> t = Register(New);
00057         
00058         //registerMemberFn(&Banker::addBudgetSync, "addBudget");
00059         //registerMemberFn(&Banker::setBudgetSync, "setBudget");
00060         //registerMemberFn(&Banker::authorizeBid, "authorizeBid");
00061         //registerMemberFn(&Banker::cancelBid, "cancelBid");
00062         //registerMemberFn(&Banker::winBid, "winBid");
00063 
00064         //registerMemberFn(&Banker::getCampaignStatusJson, "getCampaignStatus");
00065         //registerMemberFn(&Banker::dumpAllCampaignsJson, "dumpAllCampaigns");
00066     }
00067 
00068 };
00069 
00070 void to_js(JS::JSValue & value, const std::shared_ptr<Banker> & as)
00071 {
00072     value = BankerJS::toJS(as);
00073 }
00074 
00075 std::shared_ptr<Banker>
00076 from_js(const JSValue & value, std::shared_ptr<Banker> *)
00077 {
00078     return BankerJS::fromJS(value);
00079 }
00080 
00081 Banker *
00082 from_js(const JSValue & value, Banker **)
00083 {
00084     return BankerJS::fromJS(value).get();
00085 }
00086 
00087 
00088 /*****************************************************************************/
00089 /* NULL BANKER JS                                                            */
00090 /*****************************************************************************/
00091 
00092 const char * NullBankerName = "NullBanker";
00093 
00094 struct NullBankerJS
00095     : public JSWrapped3<NullBanker,
00096                         NullBankerJS,
00097                         BankerJS,
00098                         NullBankerName, rtbModule, true> {
00099 
00100     NullBankerJS()
00101     {
00102     }
00103 
00104     NullBankerJS(const v8::Handle<v8::Object> & This,
00105            const std::shared_ptr<NullBanker> & data
00106                = std::shared_ptr<NullBanker>())
00107     {
00108         wrap(This, data);
00109     }
00110 
00111     static Handle<v8::Value>
00112     New(const Arguments & args)
00113     {
00114         try {
00115             new NullBankerJS
00116                 (args.This(),
00117                  std::shared_ptr<NullBanker>(new NullBanker(getArg(args, 0, false, "authorize"))));
00118             return args.This();
00119         } HANDLE_JS_EXCEPTIONS;
00120     }
00121     
00122     static void Initialize()
00123     {
00124         Persistent<FunctionTemplate> t = Register(New);
00125         registerRWProperty(&NullBanker::authorize_, "authorize",
00126                            v8::DontDelete);
00127     }
00128 };
00129 
00130 std::shared_ptr<NullBanker>
00131 from_js(const JSValue & value, std::shared_ptr<NullBanker> *)
00132 {
00133     return NullBankerJS::fromJS(value);
00134 }
00135 
00136 NullBanker *
00137 from_js(const JSValue & value, NullBanker **)
00138 {
00139     return NullBankerJS::fromJS(value).get();
00140 }
00141 
00142 NullBanker &
00143 from_js(const JSValue & value, NullBanker *)
00144 {
00145     return *NullBankerJS::fromJS(value).get();
00146 }
00147 
00148 void
00149 to_js(JSValue & value, const std::shared_ptr<NullBanker> & fset)
00150 {
00151     value = registry.getWrapper(fset);
00152 }
00153 
00154 
00155 } // namespace JS
00156 } // namespace Datacratic
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator