I am publishing a part of the code for the SimpleClient class . There is another class which creates several instances of this SimpleClient class and then invokes the do_actions method on those instances with the paramters.
public class SimpleClient[/b] implements ConnectionEstablishedListener , PacketListener ,RosterListener{
private Statistics stats = Statistics.getInstance();
private int state = 0;
private XMPPConnection xc = null;
private int upper = 0;
private Roster my_roster = null;
private String username = null;
private int number = 0 ;
private String password = “welcome1”;
private String hostname = null;
private int port = 5222;
private String basename = null;
public SimpleClient(String basename,int number,int upper,String hostname,int port) {
this.basename = basename ;
this.username = basename + number;
this.upper = upper;
this.hostname = hostname ;
this.port = port ;
System.out.println("Creating client " + username);
}
public void login()[/b] {
XMPPConnection.addConnectionListener(this);
try{
this.xc = new XMPPConnection(this.hostname,this.port,“xyz.com”);
xc.addPacketListener(this,new myPackFil());
// Most servers require you to login before performing other tasks.
xc.login(this.username, “welcome1”);
this.my_roster = xc.getRoster();
this.my_roster.addRosterListener(this);
state = 1;
this.stats.setNumLogin();
}
catch(XMPPException e){
e.printStackTrace();
}
}
/*this function sends in the specified number of packets as given by
*the arguments
**/
public void do_actions[/b](int mesg, int pres , int ros_add ,int ros_rem , int ros_ren , int vcrd_get ,int vcrd_set,int mod_ver) {
System.out.println(“MESG:”+mesg+" PRES:"+pres+" ROS ADD:"+ros_add+" ROS REM:"+ ros_rem + " ROS REN:"+ ros_ren+" VCRD GET:"+vcrd_get+" VCRD SET:"+vcrd_set + " VER:"+mod_ver);
for(int i=0;i<mesg;i++) {
this.sendChat();
}
for(int i=0;i<pres;i++){
this.sendPresence();
}
System.out.println("roster add is " + ros_add);
for(int i=0;i<ros_add;i++){
this.addRoster();
}
System.out.println("roster rem is " + ros_rem);
for(int i=0;i<ros_rem;i++){
this.remRoster();
}
System.out.println("roster ren is " + ros_ren);
for(int i=0;i<ros_ren;i++){
this.renRoster();
}
System.out.println("vcard get is " + vcrd_get);
for(int i=0;i<vcrd_get;i++){
this.sendVcrdGet();
}
for(int i=0;i<vcrd_set;i++){
this.sendVcrdSet();
}
for(int i=0;i<mod_ver;i++){
this.sendVersion();
}
}
public void logout(){
this.xc.close();
this.stats.subNumConnd();
}
public void sendPresence() {
Random rtd = new Random();
String status = “Away”;
switch(rtd.nextInt(4)) {
case 0: {
status = “Away”;
break;
}
case 1: {
status = “Be Right Back”;
break;
}
case 2: {
status = “Gone For Lunch”;
break;
}
case 3:{
status = “Not At My Desk”;
break;
}
}
Presence prs = new Presence(Presence.Type.AVAILABLE );
prs.setStatus(status);
this.xc.sendPacket(prs);
this.stats.setNumPrscSent();;
}
public void addRoster() {
//System.out.println(“COMING IN”);
Roster.setDefaultSubscriptionMode(Roster.SUBSCRIPTION_ACCEPT_ALL);
if( this.my_roster == null) {
this.my_roster = this.xc.getRoster();
this.my_roster.addRosterListener(this);
}
this.my_roster.reload();
Random rtd = new Random();
String user_selected = “testnew” + rtd.nextInt(this.upper+1) + "@xyz.com";
try{
this.my_roster.createEntry(user_selected,user_selected,null);
}
catch(Exception e) {
this.stats.setNumErrors();
e.printStackTrace();
}
this.stats.setNumRostAdd();
}
public void remRoster(){
Roster.setDefaultSubscriptionMode(Roster.SUBSCRIPTION_ACCEPT_ALL);
if( this.my_roster == null) {
this.my_roster = this.xc.getRoster();
this.my_roster.addRosterListener(this);
}
this.my_roster.reload();
Random rtd = new Random();
int selected = rtd.nextInt(this.my_roster.getEntryCount());
RosterEntry chosen = null;
Iterator all = this.my_roster.getEntries();
for(int count =0; all.hasNext();count++ ) {
RosterEntry temp = (RosterEntry)all.next();
if(count == selected) {
chosen = temp;
}
}
try{
this.my_roster.removeEntry(chosen);
}
catch( Exception e) {
this.stats.setNumErrors();
e.printStackTrace();
}
this.stats.setNumRostRem();
}
public void renRoster() {
Roster.setDefaultSubscriptionMode(Roster.SUBSCRIPTION_ACCEPT_ALL);
if( this.my_roster == null) {
this.my_roster = this.xc.getRoster();
this.my_roster.addRosterListener(this);
}
this.my_roster.reload();
Random rtd = new Random();
if(this.my_roster.getGroupCount() != 0)
{
int selected = rtd.nextInt(this.my_roster.getGroupCount());
RosterGroup chosen = null;
Iterator all = this.my_roster.getGroups();
for(int count =0; all.hasNext();count++ ) {
RosterGroup temp = (RosterGroup)all.next();
if(count == selected) {
chosen = temp;
}
}
chosen.setName(“NEW NAME” + rtd.nextInt(100));
this.stats.setNumRostRenGrp();
}
}
public void sendChat() {
Random rtd = new Random();
int selected = rtd.nextInt(this.upper+1);
Message my_msg = new Message(“testnew”+selected + "@xyz.com");
my_msg.setBody(“HELLO WORLD”);
this.xc.sendPacket(my_msg);
this.stats.setNumChtSent();
}
public void sendVcrdGet() {
Random rtd = new Random();
int selected ;
do {
selected = rtd.nextInt(this.upper+1);
}while(selected == 0);
System.out.println(“getting vcard for :” + this.basename + selected);
ProviderManager.addIQProvider(“VCARD”,“vcard-temp”,new VCardProvider());
VCard vcrd = new VCard();
try{
vcrd.load(this.xc, this.basename + selected + "@xyz.com");
}
catch(XMPPException e) {
this.stats.setNumErrors();
e.printStackTrace();
}/*
catch(NullPointerException e) {
System.out.println(“the username : " + this.basename + selected + " gave null”);
}*/
this.stats.setNumVcrdGet();
}