P2P DCC Documentation

1.0

Author:
Jagdish Prasad Achara
Date:
October 19, 2010

Application_Modules

Our application is divided in 6 modules

1. Access Control Layer

2. Synchronization Layer

3. Networking

4. Model

5. Utility

6. ViewControllers

Here is a short description of what these modules do (You can find details of a particular class and method in corresponding class and method descriptions respectively):-

1. Access Control Layer: As depicted by it's name, this layers deals with access control on events. It's an implementation of article 1 (A Flexible Access Control Model for Distributed Collaborative Editors).

2. Synchronization Layer: As depicted by it's name, this layers deals with synchronization of events. It's an implementation of artic- le 2 (Coordination model for Real-time collaborative editors).

3. Networking: This layers handles all network stuff. This consists of classes (creating a service, browsing for other services and handling connections between peers).

4. Model: This layer stores events in calendar. In class Calendar, we have a list of events and event class has all the attributes of event like event title, event location, date etc.

5. Utility: We created this module just to put extra supporting classes for other modules (which are common). But, We found only one such class 'AppConfig' :-)

6. ViewControllers: This is the module where all ViewControllers classes of views are stored. Their corresponding xib files are stored in Resources folder.

Modules_Interaction

There is a very important class "DistributedCalendarAppDelegate" (which is application delegate class). This is the class which is called when the application starts executing and acts like a kind of central class. Most of module interaction is performed using this class. However, synchronization and acces control module interact with each other direcly too. There is only one instance of Calendar class which we get by calling it's getInstance method and we can get the instance of calendar at any time and from anywhere we want.

Application_Workflow

Like every other program in c(programming language), application starts execution from main() method of class main.m (In Other Resources group) and calls UIApplicationMain which does not return till the application finishes execution. UIApplicationMain, in turn , calls application delegate's (In our case, DistributedCalendarAppDelegate) application:didFinishLaunchingWithOptions: mehtod. From there on, you should try to find the application flow on your own; if you are familiar with c or any other object-oriented programming language, i'm sure, it won't be a tedious task for you. Apart from all these, it's necessary to grasp few concepts of objective-c language like delegation, model-view-controller, syntax difference of objective-c (not a big deal), memory managemnet. We might have missed one or two topics, but, you should discover those on your own as you encounter them in the process...:-)

Todo:
1. To find/develop a real p2p service layer above which we can develop our application. 2. To deal with Read right. 3. Improve user interface to as much extent as we can. 4. To make it run on internet.
 All Classes Files Functions Variables Properties