Async read and write API on Open62541 OPC UA - asynchronous

I am developing an OPC UA client that needs to connect asynchronously to a server and update its node data. I am using UA_Client_connectAsync to connect to the server but the async write/read APIs e.g. UA_Client_writeValueAttribute_async in
Examples/client_async.c
of Examples codes are missing from source code and do not compile. Are they deprecated? What is the new API for Async read/write to the server?
I am asking this question because I have tried the UA_Client_writeValueAttribute API with the non-blocking UA_Client_connectAsync and the server node does not receive any data on its node.

Related

Can you still use XMPP with Firebase Cloud Messaging in a new project?

I tried setting up an authentication session with FCM today(August 2021) using the XMPP protocol.
(See https://firebase.google.com/docs/cloud-messaging/auth-server
The fcm-xmpp server is still running and the first message in the authentication sequence works:
<stream:stream to="fcm.googleapis.com"
version="1.0" xmlns="jabber:client"
xmlns:stream="http://etherx.jabber.org/streams">
The server responds back with the various options.
The next step in the process should look like this:
<auth mechanism="PLAIN"
xmlns="urn:ietf:params:xml:ns:xmpp-sasl">MTI2MjAwMzQ3OTMzQHByb2plY3RzLmdjbS5hb
mFTeUIzcmNaTmtmbnFLZEZiOW1oekNCaVlwT1JEQTJKV1d0dw==</auth>
From GOOGLE: (https://firebase.google.com/docs/cloud-messaging/auth-server)
Starting from March 2020, FCM stopped creating legacy server keys.
Existing legacy server keys will continue to work, but we recommend
that you instead use the newer version of key labeled Server key in
the Firebase console.
They suggest using the new key, but using the new server key in the second part does not work.
The server returns with a failure and <incorrect-encoding/> - I assume this has to do with base 64 encoding.
Does anyone know if there is a solution to this or is XMPP not an option going forward anymore?
(I am using an esp8266 with an SSL connection)

Blank Firebase project makes connection to unexpected public database

Firebase makes a connection to an unexpected public database on a brand new project. The template of the database where it connects looks like https://s-usc1c-nss-XXX.firebaseio.com, where XXX is a 3 digit number.
Connecting to the server listed in the connection above shows an insecure public database, e.g. https://s-usc1c-nss-204.firebaseio.com/.json
Is this normal behavior?
"dependencies": {
"#babel/runtime": "^7.2.0",
"firebase": "^7.14.4",
"react": "^16.6.3",
"react-dom": "^16.6.3"
},
firebaser here
That connection is part of Firebase's internal routing protocol, and is how the Firebase client determines what server/cluster your database is currently hosted on.
The client caches the server/cluster name that it gets back, so you should usually not see this lookup on each connection.
All Realtime Database instances are "public". That's how cloud services work that must be reachable directly by client apps running anywhere on the internet. Without a public service, the client would have no way to make the query.
If you need to secure the database from direct client access, you will need to write security rules to determine who can read and write which locations in the database.

Corda - Get State Machine Feed from ServiceHub

CordaRPCOps provides a mechanism to access the state machine feed
ops.stateMachinesFeed().updates.subscribe {
...
}
I want to be able to access the state machine feed from a Corda service. Is there an equivalent to this using ServiceHub or AppServiceHub?
You can't do it at the moment. It requires accessing an instance of StateMachineManager and there is not a way to wire that into a service.

IBM i QtmhCvtDB alternative to be called out of HTTP server

I need to transform POST data to a recordset in an IBM i system. For this purpose I'm using API QtmhCvtDB.
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzaie/rzaieapi_qtmhcvtdb.htm
But I'm doing it out of CGI stack, I'm doing it implementing command bus pattern, then I get:
Response code -5
This API is not valid when a program is not called by HTTP Server. No data parsing is done.
Is there something like QtmhCvtDB but executable from whole system?

NotificationHub Push Notification returns : The Token obtained from the Token Provider is wrong

I have Wp8.1 Silverlight app that receives push notification (WNS) from Mobileservice (the old azure service).
I therefore wanted to update to the new service because of the new features. I have now created/upgraded a new server to use App Service - Mobile App. And tested push notification with the sample app from azure (everything works).
Going back to my app WP8.1 -> Adding the new package Microsoft.Azure.Mobile.Client through NuGet (2.0.1), there is the issue that the Microsoft.WindowsAzure.Mobile.Ext does not contain the 'GetPush' extension. It seems like it is missing it? looking to the WP8 version, it only registers to MPNS, and I need WNS. So I do not know if any other assembly could be used.
Can I add another assembly reference?
Update
The following code lets me register the device on the server, and I can see the device register correctly. where the channelUri and the installationInformation are retrieved by the client and send to the server.
Installation ins = new Installation();
ins.Platform = NotificationPlatform.Wns;
ins.PushChannel = uTagAndChan.ChannelUri;
ins.Tags = uTagAndChan.Tags;
ins.InstallationId = uTagAndChan.installationInformation;
await hubClient.CreateOrUpdateInstallationAsync(ins);
Sending a test toast-notification to the registered tags, results in the following error :
The Token obtained from the Token Provider is wrong
Searching on this issue I found Windows Store App Push Notifications via Azure Service Bus. Which the proposed solution says to register to the notification hub directly from the app, I would rather not have the app to have directly access to the hub. But is this the only way? (mind you the answer was not accepted, but I will try it all though it is not a desired solution)
Update
Registering for notifications via client (WP8.1 Silverligt), makes a registration to MPNS, which I do not want.
The snippet on the server registers a WNS, the two registrations can be seen here:
The URI retrieval is done using
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
which in the description states it returns a WNS. This seems to infer that the registration I am doing on the server (code snippet in the top) is correct and the registration on the client is faulty.
But the registration on the image seems wrong. Shouldn't the PNS Identifier be different for the two registrations? also expiration date seems wrong ?
How to mend this since the GetPush() (which was available in the sample registered the client correctly for notifications) does not exist in the NuGet package?
Update
I read one place that deleting and recreating the NotificationHub could help. I will try this today. Even IF it works, it would be more desirable to have the solution, and to know if the registrations are done correctly?
Temporary solution:
Deltede, recreated, inserted Package SID and Secret. And it works again (strange)!
Still interested in the underlying issue!
Deleted and recreated the service, setting all the same settings made it work again.
I had same issue with my UWP. But in my case I had issue with self signed certificate.
When I set the AppxPackageSigningEnabled property to True (in .csproj) then notifications stopped working and I got "The token obtained from the Token Provider is wrong" (Test send from Azure Portal).
The certificate must have same issuer as Publisher in Identity element in .appxmanifest file.

Resources