[fpc-pascal] How do I pass a call back Class and its method to an external library *.so file writting in C++

2024-10-03 Thread Dennis via fpc-pascal

Dear All,

I am given an API linux library *.so file written in C++.
It was expected to be consume by a program written in C++.
However, I would like to write such a program in Free Pascal.

The given header file is:
#ifndef ApiProxyWrapperReplyH
#define ApiProxyWrapperReplyH
//---
#include 
#include "SPApiProxyDataType.h"
class ApiProxyWrapperReply {

public:
    ApiProxyWrapperReply(void){};
    ~ApiProxyWrapperReply(void){};
    virtual void OnLoginReply(char *user_id, long ret_code,char 
*ret_msg) = 0;

    virtual void OnConnectedReply(long host_type,long con_status) = 0;
    virtual void OnApiOrderRequestFailed(tinyint action, const 
SPApiOrder *order, long err_code, char *err_msg) = 0;
    virtual void OnApiOrderReport(long rec_no, const SPApiOrder *order) 
= 0;

    virtual void OnApiOrderBeforeSendReport(const SPApiOrder *order) = 0;
    virtual void OnAccountLoginReply(char *accNo, long ret_code, char* 
ret_msg) = 0;
    virtual void OnAccountLogoutReply(char *accNo, long ret_code, char* 
ret_msg) = 0;

    virtual void OnAccountInfoPush(const SPApiAccInfo *acc_info) = 0;
    virtual void OnAccountPositionPush(const SPApiPos *pos) = 0;
    virtual void OnUpdatedAccountPositionPush(const SPApiPos *pos) = 0;
    virtual void OnUpdatedAccountBalancePush(const SPApiAccBal 
*acc_bal) = 0;
    virtual void OnApiTradeReport(long rec_no, const SPApiTrade *trade) 
= 0;

    virtual void OnApiPriceUpdate(const SPApiPrice *price) = 0;
    virtual void OnApiTickerUpdate(const SPApiTicker *ticker) = 0;
    virtual void OnPswChangeReply(long ret_code, char *ret_msg) = 0;
    virtual void OnProductListByCodeReply(long req_id, char *inst_code, 
bool is_ready, char *ret_msg) = 0;
    virtual void OnInstrumentListReply(long req_id, bool is_ready, char 
*ret_msg) = 0;

    virtual void OnBusinessDateReply(long business_date) = 0;
    virtual void OnApiMMOrderBeforeSendReport(SPApiMMOrder *mm_order) = 0;
    virtual void OnApiMMOrderRequestFailed(SPApiMMOrder *mm_order, long 
err_code, char *err_msg) = 0;
    virtual void OnApiQuoteRequestReceived(char *product_code, char 
buy_sell, long qty) = 0;
    virtual void OnApiAccountControlReply(long ret_code, char *ret_msg) 
= 0;
    virtual void OnApiLoadTradeReadyPush(long rec_no, const SPApiTrade 
*trade) = 0;

};

#endif

I am expected to create and pass an instance of such class 
ApiProxyWrapperReply in my calling program

 via a function
void SPAPI_RegisterApiProxyWrapperReply(ApiProxyWrapperReply* 
apiProxyWrapperReply);


and the external library will then call the various methods of 
ApiProxyWrapperReply  as 'call-back' functions when needed.


I consulted co-pilot but it failed to teach me how to do so in a Free 
Pascal program calling such an external library.


Please kindly help.

Dennis Poon

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] [Lazarus] Lazarus server under DDOS

2024-10-03 Thread Denis Kozlov via fpc-pascal



Cloudflare offers DDOS protection even on the Free plan:
https://www.cloudflare.com/plans/
https://www.cloudflare.com/ddos/

It is easy to set up and works really well.

Denis


On 01/10/2024 10:00, Marc Weustink via lazarus wrote:

Hi,
The Lazarus server is currently under heavy DDOS. This affects the 
Lazarus main site, the Lazarus packages, the Lazarus mailing list 
archives and the Lazarus+Freepascal forum.
I've enabled a rate limiter so the sites should be available again (in 
the first few seconds it was active, it blocked 10k connection 
attempts) but it might have some side effects using the forum.

I hope it gets over soon.

Marc


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal