RTI DDS two applications publishing data on same domain. When one application closes and reopens it looses the data. How to solve? - subscriber

I have two publisher and subscriber application.
App1 -> publish -> Student (1,ABC), Student(2,EFG).
After it I run second application. both application subscribe and publish on same domain
App2 able subscribe Student (1,ABC), Student(2,EFG) which is published by App1
then I Published data. App2-> publish -> Teacher(1,AAA),Teacher(2,BBB)
Now I got Student (1,ABC), Student(2,EFG),Teacher(1,AAA),Teacher(2,BBB)
from App2
when I close app2 and reopen again I am unable to subscribe this data
How can I subscribe data which I published before closing application ?
DDS Spy shows data still available on same domain.
Can somebody help to understand?

How can I subscribe data which I published before closing application
?
The behavior that you are looking for is supported by the Durability Quality of Service (QoS) setting. It specifies if published data needs to remain available to be delivered to late joining Subscribers who joined the Domain after the data has been published, and for how long.
There are four different policies that you can select for the Durability QoS. In order of increasing lifetime of the data, they are:
VOLATILE (the default): Updates are delivered only to DataReaders that are present at the time of publication
TRANSIENT_LOCAL: Updates remain available for delivery to DataReaders as long as the DataWriter exists
TRANSIENT: Updates remain available for delivery to DataReaders as long as the Domain exists
PERSISTENT: Updates remain forever available for delivery to DataReaders, even after the Domain has been restarted.
For any of these policies, data is also removed if the dispose() call is used, or if its lifespan period expires.
From your short description, it looks like you need to select the TRANSIENT_LOCAL policy for your Durability QoS.
For more information, see section 2.2.3.4 DURABILITY in the DDS specification, which is freely downloadable from the OMG DDS webpage.

Related

Cloud Pub/Sub is available for a specific region. What does this mean? Please confirm

Does the release notes statement that Cloud pub/sub is available now in a specific region mean that the data movement (pushing into the topic, subscribing to a topic, storing message) happens within that region only?
GDPR requirement (Data residency) that data shall not move from the geography where the data originated from.
Please confirm.
Google Cloud Pub/Sub is a global service, available from everywhere. It is not possible to choose where you want your Pub/Sub service to be, but it will be in the closest region to your project location. The fact that is available in a new region means that now that region has the necessary infrastructure to host a Pub/Sub service.
Here you can see the location of Google Cloud products, and also the release notes on Pub/Sub
[EDIT]
Despite this, there are some ways to help you ensure compliance:
As mentioned above, Pub/Sub takes the best effort to keep your data in the closest location to you the source of publication, and once it is stored, that data will not moved without your explicit action.
Pub/Sub provides monitoring on data storage location, thus you can track any potential violations and take action by discarding the backlog using Pub/Sub's seek's functionality or ensuring that it is quickly processed.
Risk can be limited by reducing message retention duration.
Pub/Sub now supports controlling where your message data is stored. Specifically, a topic now has a configurable message storage policy which is a list of GCP regions where Pub/Sub is allowed to store message data on disk. When a message is published to a region not in this list, the request is forwarded to the nearest allowed region for processing. The policy can be configured on a topic or as an organizational policy for a project, project folder or an entire organization. When an organization policy is configured, individual topic policy can be changed only in ways that do not violate the organization policy. See: https://cloud.google.com/pubsub/docs/resource-location-restriction.

Synchronizing Clients with Gmail

What is Synchronizing client with gmail ? Can anybody give a detailed explanation, because i want to have a better understanding over this concept.
For example, if your client keeps any local cache of the Gmail mailbox data like the Message.Id and labels, or headers, or the entire email. Then in order to update your client you're synchronizing it with Gmail--pulling new updates down to your client. In cases of clients designed for offline use, then synchronizing may also mean pushing local updates back up to the server (e.g. label updates made by client while "offline" that get applied at some later point). That's the general definition of synchronizing.
For the Gmail API specific case, Gmail has a backend mailbox-wide history Id. Any change that affects that account in any way gets a history identifier and most (but not all) history changes affect the state of email messages. Like adding a new message, changing the labels on a message, or deleting a message. Clients of the Gmail API can poll the history Id and find out what's changed since the last time they synchronized and pull down updates to maintain their sync.

Create custom paypal button with link direct after payment

I am trying to create a custom paypal button for selling digital goods, that will direct the buyer to a link that will allow him to download the file.
I've read a bit this paypal article about advanced html variables but I am not sure which I have to use to make it work: https://developer.paypal.com/webapps/developer/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/
Obviously the download should only initiate based on the payment ID to prevent free downloads, or is that done automatically by paypal?
What I would recommend us utilizing Instant Payment Notification (IPN) to handle all your post-payment processing tasks like updating your database, sending out email notifications (including one with a download link), etc.
Instant Payment Notification (IPN) is a message service that notifies
you of events related to PayPal transactions. You can use IPN messages
to automate back-office and administrative functions, such as
fulfilling orders, tracking customers, and providing status and other
transaction-related information.
This will allow you to not only automate the procedures, but also correctly handle things like e-checks or any other type of payment that may originally be in a "pending" status. You wouldn't want to deliver the digital goods until that payment actually clears. With IPN you will get 1 notification that your script can handle when the payment comes through as pending, and you would get another one when the payment updates to Completed, or Failed, or whatever.
The IPN's happen in real-time so buyers won't have to wait on anything. Whatever you're doing within the script would happen instantly upon the transaction completing.

How to get a trigger when a Google app is deleted by a domain

This query is related to Google Apps. Is there a way we can get a trigger or a callback or force the user to visit a page from my app when user deletes my app from his domain?
I want to perform some operations when a user deletes the app from his domain.
Please help.
No. Mappings are completely independent of the app - they just 'point' at it. You can't get notifications when a user adds or deletes them.
The license notifications API allows you to retrieve a list of license-related events that have occurred for customers of your application. These events may be of four types:
provisions — A new license of the application has been provisioned.
expiries — A license of the application has expired.
deletions — An application has been deleted from a domain.
reassignments — An administrator has assigned or revoked a seat license for the application on the provided domain.
The license notification API allows several optional parameters:
timestamp — The time, measured in milliseconds since the UNIX epoch, to begin querying for notifications. The API will return results that occurred approximately after this time, but occasionally may return results that occurred prior to the timestamp. If you must have a list of notifications that only contains results after the timestamp, it is recommended that you apply a second filter in your code. The timestamp may not be used simultaneously with a start-token.
start-token — A continuation token, returned from a previous query, that may be used to continue retrieving notifications after the previous result set stopped. The start-token may not be used simultaneously with a timestamp.
max-results — The maximum number of notifications to return.
For a complete description of all response fields and possible values for those fields, see the reference.
For more : http://code.google.com/googleapps/marketplace/v2/developers_guide.html#license_notifications

How to: Create reminders that should trigger an event to be handled in a Windows application?

I need to develop a windows application with .NET 3.5 that needs to have a calendar and user can schedule appointments.
I want (not with a windows-service) that while the application is on, all the reminders that are set up for this user + reminders that admins set them up, should trigger an event in the application so I can handle it (showing the user a message, notify icon or whatever), once its datetime becomes now.
The data is saved in SQL Server and accessible from many computers, the admin should be able to externally create reminders for users.
Any approaches?
Locally, you could trigger the events using a timer that check the current time e.g. every 10 seconds or more often. The clients should regularily synchronize with the database server, querying all data for the current day or (on user demand) later events. This allows the clients to run and to remind the user even when the network fails for some time.
Another very interesting option is a server side reminder tool next to the database. It generates reminders and sends them via XMPP to the clients. The client machines don't need a special software anymore - any Jabber client would be sufficient, although a special software acting as an XMPP client would be possible, too.
You should really avoid popups. Popups are generally considered not user friendly. They interrupt the user's work flow. Even worse, they steal the keyboard input. What if the users was typing an important email right now?
Instead you might provide a nice, pleasant sound and a task bar bubble or similar.

Resources