Servoy Data Stream Plugin

Hi all :)

A few weeks back I wrote a media-playback plugin.
Whilst I have not yet had time to complete the Capture integration into Servoy, I have had time to optimize the way data is loaded into and out-of the SQL database which sits behind Servoy.

The functions I have created allow the user to stream binaries into & out of the database via the Servoy script API by way of a new plugin which has support basically for:

READ from Servoy : plugin.streamFieldToFile/Url
and
WRITE to Servoy : plugin.stream[File/Url]ToField()

Why do this ?
Two key reasons:

  1. avoiding out-of-memory errors : small buffers used for streams
  2. UI responsiveness : the UI continues to work for the User whilst a potentially long IO event takes place (particularly one that might time out)

If anyone is interested in using the plugin, please reply to this posting.

ps : these streaming functions will be fitted onto the Media Manager plugin to optimize its performance, and the Capture support for Servoy is about 2 weeks away.

cheers
julian

Well that fairly easy to do, make a server/client combo plugin like the open source mail plugin (java files are in the jar) and in the server plugin get a server java.sql.connection en recieve streaming data from the client plugin via RMI and apply to the connection

Thanks Jan.

That will fit in nicely with the ConnectionProvider interface I pass thru the delegate classes that perform the streaming.

I assume you expose the entire jdbc 2 api on the connection.

I’ll take a look at the source you suggest.
I guess it means also that I need to care about RemoteException and that might change an interface i have…but worse things have happened ;)

ciao
Julian

Servoy works on Jdbc 1 and onwards and we have no dependency on jdbc 2, so we dont require this from the database drivers.

Hi Jan.

In your reply you stated

in the server plugin get a server java.sql.connection

What technique should I use in that environment ?
Should I simply: ?
try
{
connection =
DriverManager.getConnection(
jdcUrl,
login.getUsername(),
login.getPassword());
}
catch(){}
finally(){}

or…is there a server-side Servoy connection-manager that I should use ?

thanks in advance
julian

see http://developer.servoy.com/docs/plugin-api/ the com.servoy.j2db.plugins.IServerAccess

Hi there.

If you are interested in using this plugin, please send me an email to:
julian@practica.com.au
That way I can create a licence for you.

I will release a package which bundles together the DataStream and MediaManager plugins.

They are bundled, but decoupled.

You do not need to use the MediaManager playback/import screens unless you want to. One form is devoted to the DataStream plugin and one form is devoted to the MediaManager plugin.

The purpose of the sample file is to illustrate how data streams can be utilized in a concurrent or in a blocking fashion.

Is this plugin helps to play the audio / video file within servoy? If so will that be streaming instead of loding the whole file and start playing?

When can we have a demo version?

My email is hameed@pilot.com.hk

Thanks

Yes, A/V playback occurs with the Media Manager plugin.
The Media Manager plugin uses the functions of the Data Stream plugin.

The data is streamed to the player from the database (by using a connection supplied by the Servoy server).

Also, when you save media, it is streamed into the database using a jdbc connection in a similar way (from the file or url you specify).

I am right now packaging the release.
It will be available by the weekend.

julian

Hi all.

I have released a bundle of the DataStream and MediaManager plugins.

You can download it from : http://www.practica.com.au/cybersack/me … 1.0rc1.zip

If you don’t yet have a licence, then email me to obtain one.

cheers
Julian
julian@practica.com.au

The rc1 zip file I just published has a few items missing :(
I will re-deploy (to an rc2) this evening and the release notes will include an instruction also to remove any existing “cybersack.jar”.

Sorry…it was late and I was sleepy.

I’ll get it done as soon as I’m home from work today (remember I’m on Australian time, so 09:00 EU time is ~ 19:00 here.

thanks
Julian

Hi all. Sorry about the false start !

The missing files have been included and a new release has been cut.

In addition, new licences have been generated (and emailed to you if you are on my list).

You can download the plugins and demo applications from : http://www.practica.com.au/cybersack/me … 1.0rc2.zip

If you don’t yet have a licence, then email me to obtain one.

cheers
Julian
julian@practica.com.au

many thanks SalernoJ

is there a solution/website or anything with a real simple example/demo of what is possible with this plugin..

what are the benefits of using it?

thanks

The DataStream plugin represents a technology solution for better performance and greater application robustness.

The MediaManager plugin represents a small application framework for managing AV media utilizing the DataStream technology.

Once you install the plugin and import the solution, there are 2 forms.

The form “streams” is dedicated to the use of streaming data in/out of the database - a technique which is quite different to assignment of media columns (made possible, for example, in the servoy method editor).
eg. mediaColumn=some_value (a byte array)

Streaming minimizes memory usage and allows the user to continue work with the UI whilst the long-running I/O tasks complete (if the task is run asynchronously). Streaming data from point-to-point rarely leads to non-recoverable errors which may arise from OutOfMemory conditions.

The form “media” is devoted to the playback (and soon, capture) of movies.
It utilizes the DataStream plugin to move the data around.
The UI’s are intended to provide a convenient playback and management UI for your own media databases.

I hope this answers your question.

julian

Additional comment:
Servoy loads blobs/media from the db in memory in the servers sent it as one object to the client, works fine for several MB’s.
When streaming you can handle gigabytes of blob data ,without using memory at all, it gets streamed like a tv channel.

Great addition to have for large media users!

Yes - this is EXCELLENT! We have a couple of customers that might be very interested in this.

Do you have an idea of the licensing and a fee schedule?

GREAT STUFF!

Hi Bob and others :)

Right now I am preparing an rc3 (still without capture).

RC3 will have the following improvements:

  • tooltips for the method editor
  • samples for the method editor
  • a floating window where all progress bars will be placed
  • (maybe…depending on cancellability) a cancel function on each running request (accessible via the progress bar)
  • some better messaging
  • a bug fix (to allow multiple concurrent reads/writes to not ‘compete’ for a single progress UI)

I haven’t thought about pricing.
At this point I am far more interested in getting a robust and very usable plugin implementation.

Having said that, I am happy to continue issuing free licences until I have time to give thought to the finances.

It’s only a plugin, so in comparison to the cost of Servoy, I believe it shouldnt be significant, but should reflect my efforts and a small profit to cover maintenance etc etc.

The point is that for someone like me who is a Java/C++ coder by trade- and loved Filemaker - Servoy is just brilliant :)

RC3 is released :)

This release is something of a milestone because the plugin provides a historical “downloads” window. The window is popped up automatically a stream request is commenced.

In this window, each download, once complete, supports a “Properties” popup-menu item which identifies the SQL (and parameters) employed for executing the stream request.

You can download the plugins and demo applications from : http://www.practica.com.au/cybersack/me … 1.0rc3.zip

If you don’t yet have a licence, then email me to obtain one.

cheers
Julian
julian@practica.com.au

Please let me know of any issues or wishlist items.
In the absence of Sev 1 bugs, I will now complete the Capture integraton aspect of the Media-Manager plugin.

A patch for 1.0RC3 is available at :

http://www.practica.com.au/cybersack/me … date-1.zip

No new licences are required if you already have the base version licence.

Simply unpack and import the new .servoy file.

This update includes better tooltip, sample and parameter informtation for the method editor.
It also has improved progress stream ui management.

Julian

We are satisifed that our RC4 candidate (which is about to be released) is robust enough to migrate to a R1.0 product for both DataStream and MediaManager-Playback.

Your feedback will hopefully confirm this :)

In any case, the pricing structure for the DataStream and MediaManager plugins is defined here:

There will be no Bulk (aka “Developer”) Licence Structure.
I think it is unnecessary to introduce complex licensing structures because in each case the plugin(s) you bundle with your product need to be assigned to your end-user client.
As soon as you and your client make the decision that you want these plugins, you simply make the purchase in the name of the client.
Up to that point you may use your own copy of the software (for demonstration purposes only).
As a developer you will have purchased your own copy according to the same pricing scheme.
As soon as the client requires an installation, the licences need to be purchased and will be generated at that point in time.

I can’t think of a compelling reason to offer multi-licence packs.
If I am wrong, please let me know.

The DataStream Plugin is required by the MediaManager plugin, so the licence fee for a MediaManager Plugin includes that of the DataStream plugin.

All streaming events are ultimately controlled at the server and so the variant is always in the number of “concurrent clients”.
The term “concurrent client” means clients with different IP addresses that use the services available from the DataStream server within a specified period.
The period is likely to be one hour; this is open to your input if you feel there is a better option (so long as it is implementable).

Pricing in Euro:

http://www.cybersack.com/media-manager/pricing_1.0.html

MediaManager-Capture includes MediaManager-Playback which includes DataStream.

If a user already has a licence for either DataStream or MediaManager-Playback, then he can purchase an upgrade for the price difference.

MediaManager-Capture is not yet available.
It will be soon.
Its absence does not affect the usability or availability of the other two.

In all cases, the process of distributing the software will be to place client libraries and licences on the client;
and to place server libraries and licences on the server.

All purchases will receive free updates for a 12 month period.

At this point the MediaManager plugins are available only for the Windows and Linux (and Solaris) platforms.
This is because Apple has not yet provided the performance libraries which exist for these 2 other platforms.
Hopefully these libraries will materialize soon :)

Please send your enquiries to me at : julian@practica.com.au