[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Simple chat app

Hi Tim,

Tim Terlegård wrote:

I'd like to see how the example plugins are doing stuff. I have the
plugins in Eclipse, but there's no source code there. Can I get the
source code from somewhere?
Yes. There are instructions here: http://www.eclipse.org/ecf/resources.html

for getting anonymous CVS access to all the ECF source.

I haven't found any documentation good or easy enough so I can get
started making a simple chat application. The javadocs could tell me
a lot, but there's nothing there telling me what features a package or
class contain.

The best thing to do, I think, is to look at a few example clients. So in the org.eclipse.ecf.example.clients plugin are some relatively simple chat apps:

org.eclipse.ecf.example.clients.RobotApplication: A very simple Robot that communicates via xmpp chat rooms.
org.eclipse.ecf.example.clients.XMPPChatClient: An incomplete XMPP chat client (also an IM client)
org.eclipse.ecf.example.clients.XMPPClient: An XMPP IM/presence client (not an n-way chat like above)

Also...see the following:


What is org.eclipse.ecf.provider.generic? Generic for chat, for voip or
super generic for every single protocol?
This package provides some generic classes/abstract superclasses for use by provider implementers (of whatever protocol). For example, SOContainer is a generic abstract superclass for providers that choose to implement the ISharedObjectContainer api. It's used by the TCPClientSOContainer (the 'ECF generic' provider client), TCPServerSOContainer (the 'ECF generic' provider server). It's also used by the XMPP provider.

I though ECF was only about low level stuff, but I was glad when I found
org.eclipse.ecf.ui.* in the javadocs. That's cool.
In order to create some example apps we've done some UI code. We need a lot more, however, and it's not the primary focus of the framework (although along with everything else people are completely free to use, change, improve this UI code...if you do so, though, we'll hope you consider contributing it back to the project!)

How would I go about making a simple chat application (not using irc/im
protocols)? Is provider.generic for this? Do I need a provider?
You do need a provider (although you don't have to use provider.generic specifically...see below). Providers represent implementations of an abstract API (e.g. presence/im/chat) that is implemented via particular protocol. So, for example, in the XMPPClient.java code you will see reference to interfaces (API) for communicating about presence/im/chat (in the org.eclipse.ecf.presence bundle/plugin). But the *implementation* of these APIs is via a provider that communicates via a particular protocol to support the functions provided by the API.

You can think of the ECF APIs plugins (e.g. org.eclipse.ecf.presence, org.eclipse.ecf.discovery, org.eclipse.ecf.core, org.eclipse.ecf.datashare, org.eclipse.ecf.fileshare, org.eclipse.ecf.call, etc) as a way to represent certain kinds of communication semantics, independent of specific wire protocols. The providers deliver implementations of these APIs (one or more of them) that use a particular wire protocol to communicate. e.g. the presence api can be implemented via xmpp or yahoo's protocol and the application doesn't really have to care which wire protocol it's using...rather it's just communicating about 'presence', 'messages', 'chat'.

In general, ECF is attempt to create a virtualization layer for communications protocols.

Now...the generic provider (with implementation in org.eclipse.ecf.provider.generic) can also be used to create a chat app. The ecf example collab plugin (org.eclipse.ecf.example.collab) does exactly this. So, for example, see the code in org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject for an example of a chat app (and it does more than just chat...but see sendShowTextMsg(...)/handleShowTextMsg(...) specifically for the chat functionality.

Is there
any provider I could use for this or do I need to make my own?

You can use IRC, XMPP, Yahoo providers or the ECF generic one if you want. I would suggest the XMPP clients pointed to above for a quick start...as well as the IRC provider.

You can, of course, create your own provider...e.g. here's a short tutorial about how to do that:


and we hope/encourage you to do so. If you do create a provider and are willing/able to share it with the community please consider doing so.



Thanks, Tim
ecf-dev mailing list