cppcms-users Mailing List for CppCMS C++ Web Framework (Page 132)
Brought to you by:
artyom-beilis
You can subscribe to this list here.
2009 |
Jan
|
Feb
(22) |
Mar
|
Apr
(3) |
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
(15) |
Nov
(16) |
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(4) |
Feb
|
Mar
(8) |
Apr
(8) |
May
(8) |
Jun
(36) |
Jul
(63) |
Aug
(126) |
Sep
(47) |
Oct
(66) |
Nov
(46) |
Dec
(42) |
2011 |
Jan
(87) |
Feb
(24) |
Mar
(54) |
Apr
(21) |
May
(22) |
Jun
(18) |
Jul
(22) |
Aug
(101) |
Sep
(57) |
Oct
(33) |
Nov
(34) |
Dec
(66) |
2012 |
Jan
(64) |
Feb
(76) |
Mar
(73) |
Apr
(105) |
May
(93) |
Jun
(83) |
Jul
(84) |
Aug
(88) |
Sep
(57) |
Oct
(59) |
Nov
(35) |
Dec
(49) |
2013 |
Jan
(67) |
Feb
(17) |
Mar
(49) |
Apr
(64) |
May
(87) |
Jun
(64) |
Jul
(93) |
Aug
(23) |
Sep
(15) |
Oct
(16) |
Nov
(62) |
Dec
(73) |
2014 |
Jan
(5) |
Feb
(23) |
Mar
(21) |
Apr
(11) |
May
(1) |
Jun
(19) |
Jul
(27) |
Aug
(16) |
Sep
(5) |
Oct
(37) |
Nov
(12) |
Dec
(9) |
2015 |
Jan
(7) |
Feb
(7) |
Mar
(44) |
Apr
(28) |
May
(5) |
Jun
(12) |
Jul
(8) |
Aug
|
Sep
(39) |
Oct
(34) |
Nov
(30) |
Dec
(34) |
2016 |
Jan
(66) |
Feb
(23) |
Mar
(33) |
Apr
(15) |
May
(11) |
Jun
(15) |
Jul
(26) |
Aug
(4) |
Sep
(1) |
Oct
(30) |
Nov
(10) |
Dec
|
2017 |
Jan
(52) |
Feb
(9) |
Mar
(24) |
Apr
(16) |
May
(9) |
Jun
(12) |
Jul
(33) |
Aug
(8) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(6) |
2018 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
(14) |
Jun
(1) |
Jul
(9) |
Aug
(1) |
Sep
(13) |
Oct
(8) |
Nov
(2) |
Dec
(2) |
2019 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
2020 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(9) |
Jul
(6) |
Aug
(25) |
Sep
(10) |
Oct
(10) |
Nov
(6) |
Dec
|
2021 |
Jan
|
Feb
|
Mar
(7) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(9) |
Oct
(1) |
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Frank E. <fra...@an...> - 2010-08-20 19:34:16
|
Nevermind - I solved it. I had 'secure: true' in config.js in thus the cookie hadn't be sent back from the browser since this was no https connection. Another question: is it possible to have the session id to be transparently added as a url parameter, when cookies are not available (such as php does this)? thank, Frank Am 20.08.2010 21:17, schrieb Frank Enderle: > Hi, > > I try to use sessions. Though the system generates session cookies - > which are received by the browser - they are not available in the next > http request from the browser. I use server side sessions. > > I just have to include session_interface.h and then can use > session()[key] = value to store and value = session()[key] to retrieve > values in sync sessions. Am I missing something here? > > Any thoughts welcome. > > Regards, > > Frank > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschränkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: fra...@an... Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Geschäftsführer: Yvonne Holzwarth, Frank Enderle |
From: Frank E. <fra...@an...> - 2010-08-20 19:17:51
|
Hi, I try to use sessions. Though the system generates session cookies - which are received by the browser - they are not available in the next http request from the browser. I use server side sessions. I just have to include session_interface.h and then can use session()[key] = value to store and value = session()[key] to retrieve values in sync sessions. Am I missing something here? Any thoughts welcome. Regards, Frank -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschränkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: fra...@an... Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Geschäftsführer: Yvonne Holzwarth, Frank Enderle |
From: Artyom <art...@ya...> - 2010-08-20 08:36:25
|
> >> > >> Would it be possible to register a view at runtime? > >> > > > > Not sure. It would required making views loading > > and unloading be thread safe > > And wouldn't a simple thread lock suffice to allow only one call to the > views_pool loading system at a time? I think boost features already some > implementations in its thread part, you could integrate that to booster > as well if it isn't integrated yet. Than not that simple, think of unloading view while it in use. When using view you don't really what to hold a lock. Actually something like that is done in automatic views reloading, using RW locks... You may define if you recompile the shared object/dll it would be automatically reloaded. But it may have major performance issue. I need to think about how to do it right. In any case, it may be doable, but it should be done very carefully Artyom |
From: Artyom <art...@ya...> - 2010-08-20 08:30:49
|
> > 2. When shared object is loaded, it would be automatically loaded to static > > instance > > of views pool and unloaded when shared object goes. > > How does this work? Do I have to invoke the loader in the plugin's setup > code or is it somehow invoked automatically if I dlopen the library? Yes. view registration is done by global constructor placed in created c++ file, when shared object is loaded it's constructors are called automatically. > > 5. When plugin is unloaded, the skin would be automatically unregistered >from > > > the static_instance > > of views_pool. > > > > Does a simple dlclose() cause that behaviour or do I have to call > something in my plugin's destroy operations? > Yes. It unregistered in global destructor that are called automatically. Actually this is the way you can put view's code into your project and it would "just-work" without giving any specific notices to your code. Artyom |
From: Julian P. <ju...@wh...> - 2010-08-20 08:05:26
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 20.08.2010 09:02, schrieb Artyom: > Hello, > > Also there is a solution you can do: > > 1. Compile the skin into the plugin: i.e. create cpp sources for skin > and link them into the plugin shared object. > 2. When shared object is loaded, it would be automatically loaded to static > instance > of views pool and unloaded when shared object goes. How does this work? Do I have to invoke the loader in the plugin's setup code or is it somehow invoked automatically if I dlopen the library? > 3. In the plugin itself you can use views_pool::static_instance().render(...) > to render the view. > 4. Note: you can't load and unload two plugins simultaneously as it would not be > thread safe, > 5. When plugin is unloaded, the skin would be automatically unregistered from > the static_instance > of views_pool. > Does a simple dlclose() cause that behaviour or do I have to call something in my plugin's destroy operations? Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbjc7AAoJENidYKvYQHlQOH8QAItTvNZdNfVgmcObyRwTxer7 xq4FrC6A3u6Qy0sVgifadWwjmBxi5FMWa1QsOPEn5WtNgBrX96WjAgq1iixDk92C FIOkLBhrNC0xflX1i9FpeRGRQYq44VQ4TElhzLFDAQJuyPyh8qgoJXj7NyK659sx wgWvzTvXl9zvYqjCPgRkTCkuHEgtAmwXYBQGcBezlw580h+wSiBpdKU+Sia1hT9N NFjRLWjPZcZ4qnr5OMzF4o0vR+oZEr1FQCoKfZrvA6MaoA4abJSHj99jfB4XGzlI pa3FxPCbxNIALIGDj/Ye220Rz/gUiPa9dAoQdBIdYBSbnxMn1SQZaiNO0HdR9TWc IU2m3gLUow99avXopxfQQjn2qS8AAEUE825v2y6V99eFlllFsgYnMePe4I19HPWS xY+xIhsvJBV3mCnOSMQo7y9mgLFQEbzq6bw98idKR0r7iZ8IWkbPhfSq4Fm9AxVN 42gun8of3T74WAKBq+tz98WhO9WKyzj7fEovS5yYmkXNcipdkCTfVeo8tkNjW4Y0 BIj1b5oCuZWMqpFDbQ/kIBiG31oh6FWw9Ml1gAYX/LLN/4PKNzuRc48fletbkWmJ aslAbFHYOURp8i+JH4cWWprZ7VWFQDFdCzHKX3qQDlcmoyB1bXu7SUKivYMfmpEz SpC44ivZess1QtSFBSgY =N8DI -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-20 08:01:47
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 20.08.2010 08:46, schrieb Artyom: >> >> Would it be possible to register a view at runtime? >> > > Not sure. It would required making views loading > and unloading be thread safe At least for my case thread safety for loading and unloading views wouldn't be a problem, because my plugins are loaded sequentially for my Plugin registration class not being thread safe either. And wouldn't a simple thread lock suffice to allow only one call to the views_pool loading system at a time? I think boost features already some implementations in its thread part, you could integrate that to booster as well if it isn't integrated yet. > and make the interaction > with actual DLL quite complicated. What about a solution that would employ another factory here, a factory for the view classes. So I could simply create a factory instance for each view I want to register from my DSO. Then my plugin would issue a request of this form in its constructor: cppcms::views_pool::static_instance().extend_view("skin","view name",booster::shared_ptr<viewfactory>) Where the viewfactory pointed to by the shared_ptr would generate instances of cppcms::view_pool::view_builder<skin::view_class,content::master> So interaction should be simplified. > However, I do not really like the views_pool implementation so it > is likely to be updated and may be this feature including unloading views > may be implemented > > > You may open feature request in bug tracking system > I'll do that later this day. Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbjZhAAoJENidYKvYQHlQGC0P/j7Bb9chCKO6YHze9cNxUzYM JhxQr8OjCS1kp7VyanN9dCsV2u8mHHoKylnOSdFlDoYKodGqo1azpqBDXuKbIKKl g5VxpHIubknmApUp9RGQYU8bvqYrHfrc/v+F6ajxFCf+nxU4YGSa7reWdvrTsR7l kt5yAjDuxUdf+O04DDUkQIQUZA0JmVPqnG2X28cklT5g54qnNIksvuuTw7gfgZ7b /Vcu93sgJOOmQv5v51XF7LUH9h0IjTpxc2evO+FJyVEghEMsyJlelPnyWW88fh3K pdqCv7KKOh+fMhtfjHSWHPJENpSe/Sy8pvdEOj2yvlIrJADPOLuxCgcJ9AJr4ThN ulefQ+Cs2aOPk6IapX2A/i/pkA+Ugg4pUP5n+bnlg7J1Sz1tTrNo8C3uE+LfLn0H 3R7MlIVoKcH/T6tahZBy+mcxsZjg4zyIYDmmEOKN0tp1qGvLJGmTYWWuglUIQobw EoeqWOiZ/CcJ/YlZvBA8NSssHtAZxbk8FS+i5h9wJUk1HdhkR/iuXQ7FnKnVuXez MLy/NFiS45PetA9xYPlPAhN6KkWcOe7w168U30QdKw8sGOuzLxYn0+ERB4d0ZDuf kWDNP9IFqE2kZ/+DknFZyiQfCoT45wQHYfS8wDwTjVw2jQdTUdlNEBf9B6Zt5vtI 6/16BFhTI4H0MtONfK6l =Whjs -----END PGP SIGNATURE----- |
From: Artyom <art...@ya...> - 2010-08-20 07:02:47
|
Hello, Also there is a solution you can do: 1. Compile the skin into the plugin: i.e. create cpp sources for skin and link them into the plugin shared object. 2. When shared object is loaded, it would be automatically loaded to static instance of views pool and unloaded when shared object goes. 3. In the plugin itself you can use views_pool::static_instance().render(...) to render the view. 4. Note: you can't load and unload two plugins simultaneously as it would not be thread safe, 5. When plugin is unloaded, the skin would be automatically unregistered from the static_instance of views_pool. Note: this behavior is undocumented and may be changed in future. You'll get the notice about it. Artyom ----- Original Message ---- > From: Artyom <art...@ya...> > To: cpp...@li... > Sent: Fri, August 20, 2010 9:46:29 AM > Subject: Re: [Cppcms-users] Plugins and templates > > > > > Would it be possible to register a view at runtime? > > > > Not sure. It would required making views loading > and unloading be thread safe and make the interaction > with actual DLL quite complicated. > > However, I do not really like the views_pool implementation so it > is likely to be updated and may be this feature including unloading views > may be implemented > > > You may open feature request in bug tracking system > > Artyom > > > > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: Artyom <art...@ya...> - 2010-08-20 06:51:59
|
> > Additionally, it would be nice if cppcms_tmpl_cc could be modified to > generate a header file alongside the cpp, so that I can easily include > it into my plugin and use all classes that have been created by > cppcms_tmpl_cc. > I thought about it once, but it requires quite complex changes in cppcms_tmpl_cc that I'm not sure what the benefit you get from it. The biggest problem is automatic view registration - all views are register them selfs to cppcms in share object loading. For example how would you register a view's templates derived from other? Also note, there is almost no problems renaming .cpp file to .h with exception of automatic registration. So I don't really it comes in near future. Artyom |
From: Artyom <art...@ya...> - 2010-08-20 06:46:36
|
> > Would it be possible to register a view at runtime? > Not sure. It would required making views loading and unloading be thread safe and make the interaction with actual DLL quite complicated. However, I do not really like the views_pool implementation so it is likely to be updated and may be this feature including unloading views may be implemented You may open feature request in bug tracking system Artyom |
From: Julian P. <ju...@wh...> - 2010-08-19 16:58:10
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 18:49, schrieb Julian Pietron: > Would it be possible to register a view at runtime? As I see in the code > generated of cppcms_tmpl_cc, the template loader registers the skin > alongside with a mapping_type that contains the name of view and the > appropriate handler class / the result of passing it together with the > required content object to view_builder. > So could you add a call like > cppcms::views_pool::static_instance::extend_view("skin","view > name",&cppcms::views_pool::view_builder<skin::view_class,content::master>); > that I could call in the constructor of my plugin? > I would then compile the output of cppcms_tmpl_cc excluding the loader > to my shared object and could add the required views at runtime to > cppcms view_pool. > It would be good if there also was a call like reduce_view("skin","view > name"); just to remove a view when plugin is unloaded. > > Thanks, > Julian Additionally, it would be nice if cppcms_tmpl_cc could be modified to generate a header file alongside the cpp, so that I can easily include it into my plugin and use all classes that have been created by cppcms_tmpl_cc. Many Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbWKZAAoJENidYKvYQHlQ0dgQAKRYADJ5xE43bh3WV88vHE0S UlBqSfP/jug0EqnYHrLtM8xyYDwXVeWmG/uumvJUH2WreHxpPHwFv3ihLXiT68mT R4KCzOr+H60KNFzEfVRx3+Ue0JZIJMp8ZBqsZnMmdEWgaYjah8GaLYziVXKepTn9 iZErFpeLYqMe0FYjPEZH4e39GB2BSEHDow+20QYiTMsNiI8roiQ7MQnfKNn40KxX +6LNa0AfGSZ9tNsU5jiAL3QUi4v6RhYUK3+KWK3IigGf4y9dEHAjZTS85Xc7M2ch Qmt41JmBKLZMkmSTasW6zD0FKzDhIqFehuMxx05oafyzTAYkQaE7j59QobbTkxDQ zcope+Z7K05LAwCvv6iVAOyK0fItIqoQNGGCH37sr/Ekxj2LRPWBDcz7BzxKHuQV zuEnYy4UpEklI+Iu9bBvxv0mH6PR7LdHDEQsl5jfVhGgCgrUFf9ryY/vMweknJxO 6l9S/udeVB4s8SriEfsP/yikiCTJJXUnF1ArqV00HrgC1CqhhO2JaAik0aavedXB zSychX8kBvDL5GJGTK+8T1tgE1uGPhdr5n8ZaS8MTqS7tgpBjmCCXbpQHhi5YGLB HVFr42n67ZQr2Epu58ehHwYEIh68Sg7Xb9i3rw0JDtAbhRnT4jhEjhnZaND/EV88 ZBixLDfl0f1umwcrwPS0 =u/8a -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 16:49:50
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Would it be possible to register a view at runtime? As I see in the code generated of cppcms_tmpl_cc, the template loader registers the skin alongside with a mapping_type that contains the name of view and the appropriate handler class / the result of passing it together with the required content object to view_builder. So could you add a call like cppcms::views_pool::static_instance::extend_view("skin","view name",&cppcms::views_pool::view_builder<skin::view_class,content::master>); that I could call in the constructor of my plugin? I would then compile the output of cppcms_tmpl_cc excluding the loader to my shared object and could add the required views at runtime to cppcms view_pool. It would be good if there also was a call like reduce_view("skin","view name"); just to remove a view when plugin is unloaded. Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbWClAAoJENidYKvYQHlQydIQAJb4slmqYNrrEYrbWGX3zeBi +mODXwD2CeDaKO3dbDS8RFBO+Fm53iZfqDKe9dKB8Ao0cWQW3HM914iEIsu+fB7g Q1qtSRziPByiX7aBBDxvVjpM0BmwlhkoYGirGNzH4mxzlyA9JekdszMOiRL3uDZL U1KCxsvSWNUoAmpTRUZJwrOsRdM2d6MmDToW2oq2caoKpeqTkYYIWSSOSDGjLyjh wm8d8othE7AafE9wpfwodDDXJyhxkGwB/fiUwOVJ9ezeUjPLXwT6ZfZkko0DYXT4 4nCPueq9/t73jpNvxT8mjsQ1j/XV9Qs1ina1ou6XPDtoGONuFToBJSiMW7XmqCy8 nD3bEHhsGlF2MHZjOP1pd+IDhy8uOIuOeaZJo9WEKm+U/uX9U8qfVAJttCIRONil MoyQX1U8W5Ezxl6gxJ7vc+wAmk4aj04JDOZtduYz3pd3Kp1x06R3PmovlI75Fg6c 9MVz7dWHweTArFWQbMs/pm9WX8arKCaFLBH5aKT5YC6PQMUny5xoJTaXcjREHt7H ifAbsTRyYr9yELNmiYIasxq+YJLNSyiaxYE+LZzdZmsrDuFb2RJolIQapRIMO4oG joEszGfd/Njfmz5oACoB6VGdbimTJKhQvlC9VZAqlLIUG2DhwWScoDlHILEd51NL KaqLRkg7weBreMEOda8K =VFk6 -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 15:39:49
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > Is there a way to add script_name at runtime? Can I use PATH_INFO > instead of SCRIPT_NAME? > Because the webserver I will use will only be setup to point to > /mainApplication for example, but I want to mount a plugin to > /mainApplication/plugin; so SCRIPT_NAME would be /mainApplication while > PATH_INFO would contain the information I want to use for the > application's mount path. > Setting cppcms::mount_point's selection to match_path_info didn't work out. > I now solved my problem by using the mount_point constructor which accepts one regexp and one int and matches the regexp to PATH_INFO and passes the content of the first match group, e.g.: cppcms::mount_point mp("^/modules/plugin(.*)$",1); -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbVA5AAoJENidYKvYQHlQM+8QAL3zEHmEhyhuFLH352XepJSF WlDDnxA/NDsybfUMhOyhtNYqOcSnK7YSdjKwbi4ZTWBkWOZSteewhKu9WDuDkMuO nS0xVgRA+vJUZ92CnwSyIpDmP6bisp96Mz8oAO9cr834L5vhjhlaUJ8n+fxxe+tt 0B6iOyqqefJiWQCZWB24qGKm6tc9UOw9Nrt/+ySozUe0A1jNbRfLlbbCigK8E/x4 eJxAqY0VOci/yNhd9dClgb3a5QdHWAGdT5/6mGcOXGWm/+icKdscmiFbksK0PsNT G6OmuzESd48/XXnP9YooL8lw+TcJ3xbVWzLIREKw1WjHYPJmXCng8tnipA0m+rkI 2C3Xc0EI7dw4FpTE46oZhFY0Rc7QAzXbwBZJjkybXrz0CQwQ2oSmmUegXkGCy3s0 cC04tlvnGfo1EBALyaXd6tJRiQfIS8yqUUZXQCo2vMxY1cpHazY7rpUckUmUaZA9 IVn2uIN5oc2HZp5wY/PynzSzgrYGK0AjvD1Fwb1N5xKvEhu0gqzzUJzrMVv6fS+/ 5ssbjiBDUr56snFSQwzzXzy8A8BiPszoVevlS0MtLujypcolvNCtb2fAoMpDWJiD PIZY5eZWIbiZWeZePWXXvRlR8F87++6DnWbLWUtmVzCocQ0gHfg2ZK9Vw4LZBcK1 EiiB/MZSDtr2M2sFTCS7 =kKOJ -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 14:53:10
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 15:55, schrieb Julian Pietron: > Am 19.08.2010 14:39, schrieb Artyom: >>> >>> To create a custom factory, I just have to subclass >>> cppcms::applications_pool::factory and override the operator() >>> statement, haven't I? >>> >> >> >> Yep ;-) > > Ok, I implemented a getFactory() method that returns a factory for my > application and passed it to applications_pool()::mount, but still with > no success (Error 404). Can I check somehow if a request has been > redirected to my application / if my application has been created at all > by the factory? Is it possible to trace the way an URL is dispatched? > Ok, problem solved. For http api to work I have to add the mount path to script_names. Is there a way to add script_name at runtime? Can I use PATH_INFO instead of SCRIPT_NAME? Because the webserver I will use will only be setup to point to /mainApplication for example, but I want to mount a plugin to /mainApplication/plugin; so SCRIPT_NAME would be /mainApplication while PATH_INFO would contain the information I want to use for the application's mount path. Setting cppcms::mount_point's selection to match_path_info didn't work out. Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbUVNAAoJENidYKvYQHlQxAMQAI+so/L8NghU/vbA5vzCBDhY dek0D3yJxS3cyScCnOaXxuLEWEp5PlYGc8AQgC+ggX8oFWyS4ojuGkkSRBzQ9q8F oTjBlA7tBEgV0o+yBIgKEBZod/pV6lv4xzsMoZ7U7e2f3iU3RtLNQpccNmbcbCBJ hS+ZZUIqz5pqygtpdv7DHe4ZkZ2GRXp/3DIZ1IvGFF5SP+JQ2cyC08XGlDBg0kzc oBgRf/kRRk4iJYO6f+d32O5XKnza+5FznFX/boIgV9z56RefgS5J/AT+alQo1m+g gWpo8rdDHxRzSZUPPN6OTaIPHkJjV+RZsnGKpcNpQuCUie30mKdEr+qzMWYMC0fC lELXpQRXP+DggaxiyPTCkBt1sSELlFVo7yINxnswBxbf/yKBPwSj17xrE+JrktJy xuX2yiKu2nBnUbYTdG1kbyLmXBWL0VyzT/wY77ICCvow3FuYcKIh0N4YiLDlIYqd 9ahMdzb5jiE3PB8Jf5WnkPm2q8Kffv2T5ra/TQFvOeE6chPf32YeaDW+cOt/nQ/h 5CX6GvgtnPiA8ttBEf8z9U6K5cH1QWaJlLjwyvalZQowveOU2Qei5xgGibtewTpg 3ZawQPB93tpogzsCs6cTp8rleKSG88d10q06viTWhFevYp4YywOssBnktR7MhaKv cpZGWedVca4M5JMi1yud =lKw8 -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 13:54:28
|
Am 19.08.2010 14:39, schrieb Artyom: >> >> To create a custom factory, I just have to subclass >> cppcms::applications_pool::factory and override the operator() >> statement, haven't I? >> > > > Yep ;-) Ok, I implemented a getFactory() method that returns a factory for my application and passed it to applications_pool()::mount, but still with no success (Error 404). Can I check somehow if a request has been redirected to my application / if my application has been created at all by the factory? Is it possible to trace the way an URL is dispatched? > P.S.: Still take a look on loading shared libraries option. it is interesting. > Yes, I will investigate in this when I got the cppcms::application method up and running, because the latter one of course is more powerful and I want to use this power for my plugins. Thanks, Julian |
From: Artyom <art...@ya...> - 2010-08-19 12:39:17
|
> > It currently returns an booster::intrusive_ptr to an instance of the > plugin's application. > What does it make for a difference at all if an application is used > asynchronous? Big!!! - Asynchronous application dies when it does not have handles. i.e. you need to keep it alive. Or keep a live pointer on it. Generally speaking applications pool does not keep a pointer on it. And when last reference dies it removes it from them pool. So in your case it probably becomes immediately removed from the pool as its pointer unreferenced. - Asynchronous application executed in main thread and not in thread pool - Asynchronous application does not load session by default. - Asynchronous application does not do gzip compression - Only one asynchronous application exits and handle requests while synchronous can have multiple instances and they are cached in pool. And much more... > > To create a custom factory, I just have to subclass > cppcms::applications_pool::factory and override the operator() > statement, haven't I? > Yep ;-) Artyom P.S.: Still take a look on loading shared libraries option. it is interesting. |
From: Julian P. <ju...@wh...> - 2010-08-19 12:27:57
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 14:15, schrieb Artyom: > What is returned by: plugin.getApplication()? > It currently returns an booster::intrusive_ptr to an instance of the plugin's application. What does it make for a difference at all if an application is used asynchronous? To create a custom factory, I just have to subclass cppcms::applications_pool::factory and override the operator() statement, haven't I? Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbSNDAAoJENidYKvYQHlQ4soP/j517fi/MRuaxwCbzPg5u9X9 Jw7q96d7p0ArQIj8i0CARq9hUgqgK1PxInT9SJeZKddgIkbnjYpDiCWg3Telt/vX 8TryFmoad5VIR3zIv88etEKD1+5IDBkAPFupT67lsQjpMiLwJw4QSEM3ax17l9zF eeEiqlYVL7he+6ypWpzFwwBQPLpfEJwYawcfTvstS9+gk2I3rNHGIffAG8gDwKBR q6pTIQyGEa7PkIMDF/5tG7iTenzDU1Qv9YD+O85e0mPKthihu/3rDmOcCMe24k2g JkiWwIABcIMUMY1aLqOFsQgDSk4WGzNcM4ZaV8rT1kYsLJWLKqDDaC69nPi5QC4w 6H+GbZPw9WGLtuXGLDx2JgXbmxipglZC73lbG9RXEOSw7LSBhrP5Uzk0kQn+3lUX jfMMuKdKsfaT774R3jv3TbYJU08KMet+IP755NcRWJ3U51Py8xLfu3LcvMB/uFkq E4Sa7CIybWRH3mf1pMKqXWYAdaDeIZVcIrK0dhixuhvspx2TVSUwt2E/d/IUtVAz pDa7E++2YMwlxBMLwSWwvQNWssAcja/Gu7AuVtuQRtsfKQNL3k2UfESYzdYytdi5 +JDELDJ8sHgj2gyTXMOTAs63L2AKOgRAPDwl0pwfoGAqMbmcBva7HuHB5DD7ApvO NkSfK8BugWH0sjweiweq =0xhc -----END PGP SIGNATURE----- |
From: Artyom <art...@ya...> - 2010-08-19 12:15:51
|
What is returned by: plugin.getApplication()? > > Am 19.08.2010 13:48, schrieb Artyom: > > > >> nothing to repeat, at offset 0 > >> > >> "This loop completed." is not printed anymore, the program terminates. > > > > > > This looks like issue in your regular expression. It is PCRE error. > > > > Also note, when you mount application by a pointer, it is mounted as > > asynchronous > > application. You need a factory to mount generic application that would be > > created per request. > > > > Artyom > > > > Ok, that was it. Forgot a dot in the regular expression ^^ > But now I encounter 404 not found errors. The plan is to mount the > plugin's application at the path specified by plugin.getModulePath(). I > create the mount point using the following code: > > std::string mount_at = "/modules/"; > mount_at += plugin.getModulePath(); // Where the result of function call > is "HelloWorld" > cppcms::mount_point mp(mount_at); > srv.applications_pool().mount(plugin.getApplication(),mp); > > In the application itself I called > dispatcher().assign("/index",&HelloApplication::index,this); > > Expected result would be to see a "Hello World!" message if I point to > http://localhost:8080/modules/HelloWorld/index > (cppcms is currently running with api http). > Instead, I get a 404 error. > > How do I have to adjust the regex's to have HelloApplication::index called? > > Thanks, > Julian > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.15 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQIcBAEBAgAGBQJMbR52AAoJENidYKvYQHlQhlYP/R5081vd78IbLlPCu7OaAPXY > IOJZGnYBRsN/+yi5jah346q9l3N8RnbXtobHoo8NkncGlvvkkibokVfP6P15M9rW > QAR6HAZMN4o/j0JIvpc6SAGKTmFGRfAK6JmpQG9v4xYUNZ3EVaCCiBuh0GxYI62x > TqDWbVphyuJ04ZYYNkfQIDsEzPo5T9R1LwWLAdZdpsuA0nTTtDANvpJEwuY86o67 > wGN3vZ8Y24Q3P14MHUz0QDWHs2wC1cilHbPee8aW1HtFOClehYfzPWlq0gtSA+TT > AVV75D3WRWN4lPEQjk+IGJ0CJeUUGr9qAe5rwSJ2D61RDPaRPqEv26QUoc8/K8bS > jIPj0wI3bgSkE2QWBSMABTqH9aqUo/Y+WcEg3s+6IBQDkwh9xyW4BUAFPte9YY8J > zY+n7avAwk89m9y4rMizs5Vd/T1psZfBwqpBFrtk20wSYWeRZcPnvmV9ANl0zjX7 > FMr/6RknY1oe1xBSAhxSf9aTLEpN45GV0UhkgJG3K0PVhckwwII/xjlQQJK73xYf > A9nFwAFLqAlMLybnzoaDG96ATTc5A+XEgYGcWonvea8rvl4MQDJe1ZjgEK0ZbCBG > nyqYTG4pN/ni0BFamKZ2ZNm7IaCygPo12Z6mUqSI9D6fvfRuHMyG3uvcpkp67+tk > SSJGDxsl+FD09uAWKftG > =TwML > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: Julian P. <ju...@wh...> - 2010-08-19 12:07:29
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 13:48, schrieb Artyom: > >> nothing to repeat, at offset 0 >> >> "This loop completed." is not printed anymore, the program terminates. > > > This looks like issue in your regular expression. It is PCRE error. > > Also note, when you mount application by a pointer, it is mounted as > asynchronous > application. You need a factory to mount generic application that would be > created per request. > > Artyom > Ok, that was it. Forgot a dot in the regular expression ^^ But now I encounter 404 not found errors. The plan is to mount the plugin's application at the path specified by plugin.getModulePath(). I create the mount point using the following code: std::string mount_at = "/modules/"; mount_at += plugin.getModulePath(); // Where the result of function call is "HelloWorld" cppcms::mount_point mp(mount_at); srv.applications_pool().mount(plugin.getApplication(),mp); In the application itself I called dispatcher().assign("/index",&HelloApplication::index,this); Expected result would be to see a "Hello World!" message if I point to http://localhost:8080/modules/HelloWorld/index (cppcms is currently running with api http). Instead, I get a 404 error. How do I have to adjust the regex's to have HelloApplication::index called? Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbR52AAoJENidYKvYQHlQhlYP/R5081vd78IbLlPCu7OaAPXY IOJZGnYBRsN/+yi5jah346q9l3N8RnbXtobHoo8NkncGlvvkkibokVfP6P15M9rW QAR6HAZMN4o/j0JIvpc6SAGKTmFGRfAK6JmpQG9v4xYUNZ3EVaCCiBuh0GxYI62x TqDWbVphyuJ04ZYYNkfQIDsEzPo5T9R1LwWLAdZdpsuA0nTTtDANvpJEwuY86o67 wGN3vZ8Y24Q3P14MHUz0QDWHs2wC1cilHbPee8aW1HtFOClehYfzPWlq0gtSA+TT AVV75D3WRWN4lPEQjk+IGJ0CJeUUGr9qAe5rwSJ2D61RDPaRPqEv26QUoc8/K8bS jIPj0wI3bgSkE2QWBSMABTqH9aqUo/Y+WcEg3s+6IBQDkwh9xyW4BUAFPte9YY8J zY+n7avAwk89m9y4rMizs5Vd/T1psZfBwqpBFrtk20wSYWeRZcPnvmV9ANl0zjX7 FMr/6RknY1oe1xBSAhxSf9aTLEpN45GV0UhkgJG3K0PVhckwwII/xjlQQJK73xYf A9nFwAFLqAlMLybnzoaDG96ATTc5A+XEgYGcWonvea8rvl4MQDJe1ZjgEK0ZbCBG nyqYTG4pN/ni0BFamKZ2ZNm7IaCygPo12Z6mUqSI9D6fvfRuHMyG3uvcpkp67+tk SSJGDxsl+FD09uAWKftG =TwML -----END PGP SIGNATURE----- |
From: Artyom <art...@ya...> - 2010-08-19 11:48:50
|
> nothing to repeat, at offset 0 > > "This loop completed." is not printed anymore, the program terminates. This looks like issue in your regular expression. It is PCRE error. Also note, when you mount application by a pointer, it is mounted as asynchronous application. You need a factory to mount generic application that would be created per request. Artyom |
From: Artyom <art...@ya...> - 2010-08-19 11:44:31
|
> > The problem is, this doesn't work either, still getting std::bad_cast > exceptions. It works only if you cast the shared_ptr to > content::hello_plugin by dynamic_pointer_cast before passing it to > render(). And that's the point - the dispatcher does not know which > class to cast to. > Before we continue lets see following: Is following happens (I think now I undestand what happens)? You load plugin foo - say libfoo.so You load skin libfoo_view.so that uses class that created in libfoo.so ? You compile a cppcms application bar with -rdynamic and it fails. Am I right? If so, what happens is following. libfoo is loaded and libfoo_view.so is loaded but each one of them do not see symbols one of other. If so you need to do one of following: 1. Make sure libfoo.so loads first before libfoo_view.so (i.e. before creating service instance) 2. When you load libfoo.so you need to dlopen it with RTLD_GLOBAL flag so libfoo_view.so will see it symbols. 3. Then load libfoo_view.so. So this probably should be You may also make sure that libfoo_view.so loads with RTLD_GLOBAL but for this you need to change a little the code in CppCMS: src/views_pool.cpp And change the line: handler_ = dlopen(file_name.c_str(),RTLD_LAZY); to handler_ = dlopen(file_name.c_str(),RTLD_LAZY | RTLD_GLOBAL); And laso dlopen your plugins with this flag. Then all symbols will be visible to pluging and views and casing would work. Simplest way to check if this helps: before you alter the code just write in int main(int argv,char **argc) { void *h = dlopen("/path/to/plugin.so",RTLD_LAZY | RTLD_GLOBAL); } If this helps then these changes I'm talking would help and I'll update CppCMS to load libraries with this flag. Artyom - |
From: Julian P. <ju...@wh...> - 2010-08-19 11:33:02
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > My other idea of the plugin implementing a method returning a > subclass of cppcms::application seems more promising. Now it compiles, but I have another problem: I tried to mount my application via this code: cppcms::service srv(argc,argv); cout << "Listing request handlers." << endl; request_handlers rh = plugcontainer.listRequestHandlers(); cout << "Got " << rh.size() << " request handlers." << endl; for(request_handlers::iterator it = rh.begin(); it!=rh.end(); ++it) { std::string regex = "^/modules/"; regex += it->first; std::cout << "Attaching application at " << regex << std::endl; srv.applications_pool().mount(it->second->getApplication(srv),cppcms::mount_point(regex)); cout << "This loop completed." << endl; } srv.run(); When running the compiled program, this error is thrown by the mount command: nothing to repeat, at offset 0 "This loop completed." is not printed anymore, the program terminates. What causes this error and how to fix it? Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbRZjAAoJENidYKvYQHlQdvsP/Rt0HQuED/oQbotL+EoMG1Sw lBH2agI42cXjAcfMAGo9F7qKTsJawMywK0xpp6qaSMBhUNtMKqnO8/wYNU3ZK2Lz BxaMKZpbimQ1OzOnQzv0Zs0I6btRw3nw+VKBWrZBqkzvev9Q4qekBt95IvpvMUov OznX7ASMmhau9Z4Wx4msPRWunoRGysriaVClfZdiqKzCDFZcWOnuHMWmDdKzlSvp NHCz1PW4qqC0O9vk8bs2JcurFTTqEcb2RuBh3XYjBp7pE/YghXiZAXUwd/e4WKvP s92IiDjnHrrkqV490cuLeNJicP/cMrpSzyLl2jshaZorUDYYY9CMBcF3C3m7HcuM Mztf8f63objj5yL1kWoEaHjorAdSBAlnh8k7VCluzqFdWaO2b7kSa46Tc13OYMy9 /hUGSS1hRLFQsMUt60NpdtgWoKK6qXpG/KMMeUmlHPPQRXRQZtSqt6bX7xwvLWSr ic3wjmWCUT2b+NJ3xTDC5hYGZo2C/o0TEpkLELqcQDFnYaCoJJY+0EgPVUWZgltZ vMm8qxWt9JMTq5+U8K+TfkY6LO6fGIIyY0B7WEO8AvLlanU1bEcA4y0QkTyvs1LO WBx4/iHV+7uKu8CChTmot62ImdR7uCxWLTqPyuXDZC1PN4tgh1ASQFgGTwDtGE88 QaWzhIhfbTcH6qZqDFUu =72yw -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 11:09:06
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 13:03, schrieb Julian Pietron: > Am 19.08.2010 13:00, schrieb Julian Pietron: >> The only problem I have now, that at compile time I get a forward >> declaration error in cppcms/application.h for cppcms::url_dispatcher >> when I insert a dispatch() statement into the constructor of the >> cppcms::application. > > > Add: Just before this error is printed, I get this error: invalid use of > incomplete type »struct cppcms::url_dispatcher« Ok, forget that, it was a missing header file (cppcms/url_dispatcher.h). Nevertheless, I think cppcms/application.h should include that file itself, because one doesn't think he needs the header file if he never directly uses url_dispatcher. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbRDJAAoJENidYKvYQHlQXg4P/RatKIyiXGOh1syX13RX8jJQ 0Ed7fFNuWeVyd9QdZdK0zWp38n3pIY+NCBzDOc5nH/ikCy0j2WOMgnn1GEigMz1v qJDPlkiL+L5zeazVvXff4OOw+ZNgeIoCQgWjCd+tXyxpdYGelZqAnCsIHeWMbnLh SQ6XU57OYrUEDHyhNQzcHndcxxkN4/JUYnLgRmC0yEyUxKQqyJ0dW3CSiB0Ew4+Y 5q22keNMKuBtSqZBzBpd/NWK7QUxwwIlDANqkGy07GCynYgvaL3e/Jo18qmNSjDy TRcqaLVtCdj6E7js9pjBnxxvyI6V6FxwWMpyH+NViPDond8GdVrPPOtL+N+6NCg1 tTA02dn3phaFJHRh7toOnJFAUjI3n2SZ0jA1klnDpMu7etf3+hx3Ph7zqwCv1Y2K gIng6hlTG2GhcGAZkSQFNbqzkoNELqkbON3kfz/B1pjuK67jYidjZ/rmMUEAEVV/ wDABeCHlzPOvGVZujG6auOb22UYsj9qW1kGX7SUezxtdjR8yprXxjnmxe/w/v9Uy dArdz7oYRz9KAGu6aVmQCLCAPb9eWKmyteIFkZQsBo5ASgfDsafHt+QENwbGwsgD Lk6p6TVEe5VG/elCx4Gh+FD8EWJAOHL+rQGjGrhVdOa9mvtFA+o//GOk3d6y44JA t1vv0G4/nXdnX0TkJuwf =CJeW -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 11:03:25
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 13:00, schrieb Julian Pietron: > The only problem I have now, that at compile time I get a forward > declaration error in cppcms/application.h for cppcms::url_dispatcher > when I insert a dispatch() statement into the constructor of the > cppcms::application. > Add: Just before this error is printed, I get this error: invalid use of incomplete type »struct cppcms::url_dispatcher« -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbQ91AAoJENidYKvYQHlQBXEP/jDB0doeeuWzCfCSN/XCxu5M q7p/8D05hgXGzZAK2f8LP/Q2paQUbTWyGxiD2wyoQFGbZG+IWZ4+JP3EhkbI0oCv daFfJgrEHhBafQmjFy+gXPQdCDzNlW3A5X9zkEXzvdcW6nMdgjk9DeZhVoLnCl3f fcU/bEPE5zEO+TiyszvjO1O7eFpaii99F5Ae7JjD944O3RPYesuVzIMJd1GF9uor iP8XuCfnA5lNYF+KTbR+AD/GmHYC42ghA/UDCMNYCvlOLOxv/16ebdRpCTgPuSru 6Wdvw/nGVOh+JlrA7sVa7hfaQA6CILDZpitxq53v7Chl5nKQrHrcXFI1zL/ZzvqF kh4epCSSl68BUXdSeFlGZU3kUYhlOXzUo0624JJpHq5/vahNS/uGVEBWdV1RFNZs Z/t5tEYde8IYBtqzr4kRW0/qmsIoUckKXi9seo/cvj5eTRuB8JXTyPBzm/eTMx65 je3JfhVcRADRgo5YZC4QZ+3VOV4Hl+m4IlnqeK1t4/OGfZzAri/hrWAQRyEpe9I3 khDXlggZMniabXGNA/JFRVGGFP5pQvv9m7TlsMC7LIGbhT+LCKwNhdQfl4f8hsCf D8K1w9a4omc+A5LIDe1ek4JA4Q2GoUoK7QYnhG+ff43WhS1aFx3Sdtf6Mg4abQMk g8ECeqCbkVkYZIwl15yT =bd57 -----END PGP SIGNATURE----- |
From: Julian P. <ju...@wh...> - 2010-08-19 11:00:52
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 19.08.2010 12:35, schrieb Artyom: > What you need is something like this with smart pointers: > > class IPlugin { > public: > virtual booster::shared_ptr<content::master> handleRequest() const = 0; > }; > class HelloPlugin: public IPlugin { > public: > virtual booster::shared_ptr<content::master> handleRequest() { > booster::shared_ptr<content::hello_plugin> hp(new > content::hello_plugin); > hp->title = "Hello"; > hp->message = "World"; > return hp; > } > } > > void myapp::dispatcher(std::string module) { > IPlugin p = plugcontainer.getPluginByModule(module); > booster::shared_ptr<content::master> m = p.handleRequest(); > render("hello_plugin",*m); > } > The problem is, this doesn't work either, still getting std::bad_cast exceptions. It works only if you cast the shared_ptr to content::hello_plugin by dynamic_pointer_cast before passing it to render(). And that's the point - the dispatcher does not know which class to cast to. My other idea of the plugin implementing a method returning a subclass of cppcms::application seems more promising. The only problem I have now, that at compile time I get a forward declaration error in cppcms/application.h for cppcms::url_dispatcher when I insert a dispatch() statement into the constructor of the cppcms::application. Is there a way to fix that? Where does this problem come from? Thanks, Julian -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJMbQ7aAAoJENidYKvYQHlQDmoQALx6XTrtH3GN1dO8KVfc/mzw ZAKP1+Zie0v5jMUZGSrXj3UbSg44lv9ULtNHUo8HtMIMQ1Cwopv32G66Qbj7xjPe 09jJGBqOOspWFuzGbg4vpVivIIk3CE+SH9x73Sz+xgcY/pJoAMveQSe9w+/Wb0Zr CTLz4lZp7c15cGXp1O6sNfv50JJqoyJiLPTxbeqCbB/Ehm3oXDA9WV8pHEMSjF69 f2cO3plowsabh2wWJyiJ+xZRwcGNdV25pWcTjcjPidfN3wc5jxjWc5R9MdKmyS5h Uc90CW8dBuhnnHVdy551458dPv15k2PVwQVcYwA6GGzpQsRx1ErLglfnPYBwhJDO broHq2FiKSf61Y1YYcmL4/Ibk8v3SEMwQBgRQu/3b0ys9EmJFxjEgPWTQUqoezjK aFDdus8UM30SWUsGV/vPU3MVicltrfvmDymPwHPeExpZb/m083yfXgDj6JhUDlwq MRpZfHXnY2XfppBm+Vc096HvJ/71qMUumvYCSPdxLr9kPwpESpZbCQROorsYIkZs 9HutbFvG1LybQmTW/ZBLFd3gsTPdBO18sVxw8fT1EJYEsGrVOT83pn6ZBnCM5SDA ZZDHUymnmlgUf2VjfKsSRtqmej5AvmPhVcljOQl0yEQ8k99iY3VevQviMuXIjojH FQFK3Y0nimA6L2lapc3X =Z3/s -----END PGP SIGNATURE----- |
From: augustin <aug...@ov...> - 2010-08-19 10:48:11
|
On Thursday 19 August 2010 06:36:39 pm Artyom wrote: > Are you sure you installed this correctly? > > Because it seems that hello loads an old shared object instead of new one, > othewise > you would get a error on linking stage. > Ok. I deleted the whole cppcms build directory, and re-compiled and installed everything. The problem went away. Thanks for the fix and the help. :) Augustin. -- Friends: http://www.reuniting.info/ http://activistsolutions.org/ My projects: http://astralcity.org/ http://3enjeux.overshoot.tv/ http://linux.overshoot.tv/ http://overshoot.tv/ http://charityware.info/ http://masquilier.org/ http://openteacher.info/ http://minguo.info/ http://www.wechange.org/ http://searching911.info/ . |