termsender.c

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2006  SRI International
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  *
00018  * SRI International: 333 Ravenswood Ave, Menlo Park, CA 94025
00019  */
00020 
00021 #include "termsender.h"
00022 #include <stdlib.h>
00023 
00024 struct TermSenderStruct 
00025 {
00026   TermSenderSendTerm sendTerm;
00027   TermSenderCleanup cleanup;
00028   TermSenderType type;
00029   gint sendSocket;
00030   gint error;
00031   gpointer senderSpecificData;
00032 }
00033 ;
00034 
00035 TermSender* termSender_create() 
00036 {
00037   TermSender* t = (TermSender*)malloc(sizeof(TermSender));
00038   t->sendTerm = NULL;
00039   t->cleanup = NULL;
00040   t->type = UNKNOWNTERMSENDERTYPE;
00041   t->sendSocket = -1;
00042   t->error = TERMSENDER_OKAY;
00043   t->senderSpecificData = NULL;
00044   return t;
00045 }
00046 
00047 void termSender_free(TermSender* t) 
00048 {
00049   if(t->cleanup != NULL) {
00050     t->cleanup(t);
00051   }
00052   free(t);
00053 }
00054 
00055 int termSender_sendTerm(TermSender* sender, ICLTerm* term) 
00056 {
00057   if(sender->sendTerm != NULL) {
00058     sender->sendTerm(sender, term);
00059     if(sender->error != TERMSENDER_OKAY) {
00060       return -1;
00061     }
00062   }
00063   else {
00064     sender->error = TERMSENDER_NOTINITIALIZED;
00065     return -1;
00066   }
00067   return 0;
00068 }
00069 
00070 void termSender_setError(TermSender* t, gint errnum) 
00071 {
00072   t->error = errnum;
00073 }
00074 
00075 gint termSender_getError(TermSender* t) 
00076 {
00077   return t->error;
00078 }
00079 
00080 void termSender_setSocket(TermSender* t, gint newsocket) 
00081 {
00082   t->sendSocket = newsocket;
00083 }
00084 
00085 gint termSender_getSocket(TermSender* t) 
00086 {
00087   return t->sendSocket;
00088 }
00089 
00090 void termSender_setType(TermSender* t, TermSenderType type) 
00091 {
00092   t->type = type;
00093 }
00094 
00095 TermSenderType termSender_getType(TermSender* t) 
00096 {
00097   return t->type;
00098 }
00099 
00100 void termSender_setSenderSpecificData(TermSender* t, gpointer g) 
00101 {
00102   t->senderSpecificData = g;
00103 }
00104 
00105 gpointer termSender_getSenderSpecificData(TermSender* t) 
00106 {
00107   return t->senderSpecificData;
00108 }
00109 
00110 void termSender_setSendTermCallback(TermSender* t, TermSenderSendTerm s) 
00111 {
00112   t->sendTerm = s;
00113 }
00114 
00115 void termSender_setCleanupCallback(TermSender* t, TermSenderCleanup c) 
00116 {
00117   t->cleanup = c;
00118 }

Generated on Wed May 23 17:20:13 2007 using doxygen 1.5.2